如何从PowerShell连接到Excel的现有实例?
所有通过PowerShell自动运行Excel的示例都以这一行开头:
PS> $Excel = New-Object -Com Excel.Application
这似乎是处理一个新的Excel实例,例如运行$Excel.Visiable = $true
将显示一个空的空白Excel窗口,而不是切换到现有的工作簿。
如果已经有一个Excel实例在运行,有没有办法连接到它?
而不是通常的New-Object
-ComObject
我们这个
$excel = [Runtime.Interopservices.Marshal]::GetActiveObject('Excel.Application')
rest保持不变。
一个缺点 你只会得到由启动ps1的同一个用户启动的excel“实例”。
是的,您可以使用此WIN32 API ( AccessibleObjectFromWindow )通过HWND [窗口句柄]访问COM对象。
(请参阅这里通过C#使用此api的SO后示例)
。
您可能必须在C#中编写程序集并/或通过Powershell操作P / Invoke调用 。
你可以试试看,看看它是如何发展的。