7

PowerShell を使用して Excel を自動化するすべての例は、次の行で始まります。

PS> $Excel = New-Object -Com Excel.Application

これは、Excel の新しいインスタンスを処理しているようです。たとえば、実行$Excel.Visible = $trueすると空の空白の Excel ウィンドウが表示され、既存のワークブックに切り替わりません。

Excel のインスタンスが既に実行されている場合、それに接続する方法はありますか?

4

2 に答える 2

16

通常のNew-Object -ComObjectExcel.application の代わりに、これを使用します

$excel = [Runtime.Interopservices.Marshal]::GetActiveObject('Excel.Application')

休みはそのまま。

1つの欠点。ps1 を開始するのと同じユーザーによって開始された Excel の「インスタンス」のみが取得されます。

于 2013-07-16T15:49:32.887 に答える
1

はい、この WIN32 API ( AccessibleObjectFromWindow )を使用して、HWND [ウィンドウ ハンドル] 経由で COM オブジェクトにアクセスできます。

( C# 経由でこの API を使用する SO 投稿サンプルはこちらを参照してください)

.

C# でアセンブリを記述したり、Powershell を介して P/Invoke 呼び出しを操作したりする必要がある場合があります。

あなたはそれを試してみて、それがどうなるか見てみましょう。

于 2012-06-18T11:28:47.403 に答える