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