1

現在、データを Excel にプッシュするためのエクスポート ツールを作成しようとしています。ただし、最初のプッシュの後、Excel は開いたままになり、ユーザーが同じ Excel シートの別のページにさらにデータをプッシュする間、Excel を開いたままにしたい場合があります。通常、エクスポートが完了したら、COM オブジェクトを解放するだけです。私のメソッドが現在機能している方法では、エクスポートするたびに新しい Excel インスタンスを開く必要があります...

アプリケーションのグローバル インスタンスを作成して、エクスポートを開始してから Excel アプリケーションを閉じるまで継続的に使用することは有益でしょうか?

COM オブジェクトを解放するタイミングがわかるように、イベント ハンドラーを使用して Excel が閉じられたことを検出する必要がありますか?

Excel アプリケーションのグローバル インスタンスを作成しようとしても、それをインスタンス化してリリースを待つことができます。そうすれば、Excel の開いているインスタンスを再度見つけようとする必要がなくなります。 Excel の開いているインスタンス (以前はコードに存在していましたが、COM オブジェクトは解放されていました) を変数に割り当てます。これを行うにはどうすればよいでしょうか?

4

2 に答える 2

4

私は過去にこれを使用しました。tPath は、開く/再利用する必要がある Excel ファイルへのパスです。

Dim exApp As New Excel.Application

'finds the workbook.  If it is already open, then it uses that.  Otherwise, it opens in new instance
Dim wb As Excel.Workbook
wb = System.Runtime.InteropServices.Marshal.BindToMoniker(tPath)
exApp = wb.Parent
于 2012-09-05T14:11:09.243 に答える
4

Interop Library を使用して、開いている Excel アプリを指すことができます

(このコードは C# で記述されているため、VB.Net 用に若干の変更がある可能性があります)

oExcel = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")
于 2012-09-05T14:21:16.280 に答える