C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■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 コードのどの部分が
問題になっているのかを調べてみては如何でしょう。


# 出遅れすぎた。
## しかも解決済み付け忘れてた。
解決済み
返信 編集キー/


管理者用

- Child Tree -