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

わんくま同盟

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

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


(過去ログ 86 を表示中)
■50727 / )  Re[3]: Excel(SaveAs)がフ゜ロセスに残る
□投稿者/ 魔界の仮面弁士 (1667回)-(2010/06/16(Wed) 13:12:47)
No50721 (VBねっと さん) に返信
> デバックモードでトレースしながら
デバック→デバッグ

>>・複数のバージョン(2002 と 2003 など)を同一の環境にインストールしていない事を確認する。
SaveAs はバージョンによって引数の数が異なるため(ただし、2002と2003では同じ)、
バージョン混在問題かな…とあたりをつけていたのですが、Save でも発生するということは、
ライブラリバージョンの差異ではなく、環境側の問題なのかも知れません。(手元に環境が無いため未確認)

> Excel 11.0 object Library Ver 1.5
> Office 11.0 object Library Ver 2.3
> Office 12.0 object Library Ver 2.4
バージョン対応は 9.0=97、10.0=2002、11.0=2003、12.0=2007 のハズ…。
そもそも、Office 11.0 と 12.0 を同時に参照設定できましたっけ?

それと、これって参照設定の [COM] タブから選ばれるライブラリでは無いでしょうか。
だとしたら、[.NET] タブのプライマリ相互運用機能アセンブリを選択するようにしてみてください。

> 「CallByName 経由の呼び出しに変更」も試しましたが、うまくいきませんでした。
参照設定を外し、すべてレイトバインドで利用してみた場合はどうでしょうか?

> Excel2002とExcel2003のSaveAs(もしくはSave)でCOMの挙動が違うような気がします。
.NET ではなく、Word VBA や VBScript などから呼び出した場合も、残ってしまいますか?

> ネットに「SaveAsの後にApplication.DoEvents()を入れてみてください。」というのがありましたが、
具体的な URL を教えていただけないでしょうか。

> これもうまくいきませんでした。
どうしても解決できないようであれば、CreateDomain したアプリケーションドメインに
Excel.Application を CreateInstanceFromAndUnwrap しておき、xls 保存処理完了後に、
最後にそのアプリケーションドメインを Unload してみるというのは如何でしょう。
返信 編集キー/


管理者用

- Child Tree -