7

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

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

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

如果已经有一个 Excel 实例正在运行,有没有办法连接到它?

4

2 回答 2

16

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

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

休息保持不变。

一个缺点。您只会获得由将启动 ps1 的同一用户启动的 excel“实例”。

于 2013-07-16T15:49:32.887 回答
1

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

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

.

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

你可以试一试,看看情况如何。

于 2012-06-18T11:28:47.403 回答