如何从PowerShell连接到现有的Excel实例?

时间:2012-06-18 10:51:52

标签: excel powershell automation

所有通过PowerShell自动化Excel的示例都以此行开头:

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

这似乎是处理一个新的Excel实例,例如运行$Excel.Visiable = $true将显示一个空的空白Excel窗口,而不是切换到现有的工作簿。

如果已经有Excel实例正在运行,有没有办法连接到它?

2 个答案:

答案 0 :(得分:13)

而不是通常的New-Object -ComObject excel.application us this

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

休息保持不变。

一个缺点。你只会获得excel"实例"由启动ps1的同一用户启动。

答案 1 :(得分:1)

是的,您可以使用this WIN32 API AccessibleObjectFromWindow )通过HWND [窗口句柄]访问COM对象。

  

(参见通过C#使用此api的SO样本here

您可能必须使用C#和/或manipulate P/Invoke calls via Powershell编写程序集。

你可以试一试它&看看它是怎么回事。