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

Bor*_*ard 5 excel powershell automation

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

PS> $Excel = New-Object -Com Excel.Application
Run Code Online (Sandbox Code Playgroud)

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

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

小智 14

而不是通常的New-Object -ComObjectexcel.application我们这个

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

休息保持不变.

一个缺点.您将只获得将启动ps1的同一用户启动的excel"实例".


Ang*_*wal 1

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

(请参阅此处通过 C# 使用此 api 的SO 帖子示例)

您可能必须用 C# 编写程序集和/或通过 Powershell 操作 P/Invoke 调用

你可以尝试一下,看看效果如何。