Excel(2007)VBAでCOMサーバーオブジェクトへの参照を強制的に解除する方法を教えてください。Excel VBAからinprocess COMサーバーオブジェクトを解放する方法
私は開発マシン上のExcel 2007 VBAコードからインスタンス化されたVisual Foxpro 9 SP2でinprocess(シングルインスタンスDLL)COMサーバーを作成しました。 ExcelはCOMオブジェクト/ dllへの参照を保持しているようですが、それは何も設定しません。これは、変更を加えてテストするたびにExcelを終了するまで、「File access is Testied.dllが拒否されました」というメッセージが表示されるため、DLLを再構築できなくなります。
私がダウンして非常に簡単なテスト・セットアップのコードを煮ています: 次のようにVFP9プロジェクト(TESTCOM)は
DEFINE CLASS TestClass As Session OLEPUBLIC
ENDDEFINE
次の内容でただ一つの.prgファイルは、VBAコードでいます
をSub Test()
Set objTest = CreateObject("TestCOM.TestClass")
Set objTest = Nothing
End Sub
私はVBAプロジェクトでCOMサーバーライブラリへの参照を削除しようとしましたが、これは何の違いもありません。 私は、オブジェクト変数をDIMINGしてみると無しで試しましたが、違いはありません。 新しいVFP DLLプロジェクトを作成しようとしましたが、問題は解決しません。
VBAアプリケーション/ dllをINPROCESS/DLLとしてビルドしてVBAコードを実行すると、この問題が発生しますが、OUTOFPROCESS/EXEとしてビルドしてVBAコードを実行すると、この問題は発生しません。
COM Object Cleanupで非常によく似た問題が見つかりましたが、私のCOM ServerはVisual Foxpro 9 SP2で書かれていますが、C#に関連していますが、OPで詳しく解説されていないので、周りを回る。それが可能であれば。
コピーとpasteable宣言ですVBA/Excelのタイプライブラリへの参照がない場合は、Excelを終了しないでください。 – Caltor