所有通过PowerShell自动化Excel的示例都以此行开头:
PS> $Excel = New-Object -Com Excel.Application
这似乎是处理一个新的Excel实例,例如运行$Excel.Visiable = $true
将显示一个空的空白Excel窗口,而不是切换到现有的工作簿。
如果已经有Excel实例正在运行,有没有办法连接到它?
答案 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编写程序集。
你可以试一试它&看看它是怎么回事。