如何连接到从PowerShell的现有的Excel实例?(How to connect to exi

2019-06-25 13:53发布

通过PowerShell的Excel自动运行所有的例子开始这一行:

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

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

如果已经有运行Excel的一个实例,有没有连接到它的方法吗?

Answer 1:

Instead of the usual New-Object -ComObject excel.application us this

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

Rest stays the same.

One downside. You will only get the excel "instances" started by the same user that will initiate the ps1.



Answer 2:

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

(见A SO交样品这里使用经由C#此API的)

您可能必须写在C#中的装配和/或操纵的P / Invoke通过PowerShell的要求 。

你可以在它给一个镜头&看看怎么回事。



文章来源: How to connect to existing instance of Excel from PowerShell?