■87782 / ) |
Re[1]: C#からExcelマクロの実行 |
□投稿者/ 魔界の仮面弁士 (1726回)-(2018/06/29(Fri) 15:49:47)
|
2018/06/29(Fri) 16:15:11 編集(投稿者) 2018/06/29(Fri) 15:50:16 編集(投稿者)
■No87777 (はるかぜ さん) に返信 > var book = app.Workbooks.Open(fi.FullName); ではなく、 books = app.Workbooks; book = books.Open(fi.FullName); にします。
> Marshal.ReleaseComObject(book); book の解放に加えて、books の解放も必要です。 if( Marshal.IsComObject( books ) ) { Marshal.ReleaseComObject(books); }
変数 app も同様に ReleaseComObject しましょう、Quit 後に。
一方 VBA 側は、下記を直した方が良いでしょう。
> If Sheets(1).rbtnAri.Value Then Sheets(1) というのが、どのワークブックのシートなのか示されていません。
ThisWorkbook ≠ ActiveWorkbook な可能性もあるわけですから、 「Sheets(1)」ではなく、「対象のワークブックを表す変数.Worksheets(1)」などに 置き換えておくのが望ましいです。
> すべてのマクロが無効になっている可能性があります。 たとえば Public Function ToDotNet() As String ToDotNet = "{""" & Format(Now, "yyyy/MM/dd HH:mm:ss") & """}" End Function のような、単純な VBA だった場合も、呼び出しに失敗しますか?
単純なものであれば呼び出せるようであれば、VBA コードのどの部分が 問題になっているのかを調べてみては如何でしょう。
# 出遅れすぎた。 ## しかも解決済み付け忘れてた。
|
解決済み
|