【发布时间】:2012-06-18 10:51:51
【问题描述】:
所有通过 PowerShell 自动化 Excel 的示例都以这一行开头:
PS> $Excel = New-Object -Com Excel.Application
这似乎是在处理一个新的 Excel 实例,例如运行 $Excel.Visible = $true 将显示一个空的空白 Excel 窗口,不会切换到现有工作簿。
如果已经有一个 Excel 实例正在运行,有没有办法连接到它?
【问题讨论】:
-
您是否需要连接到由特定窗口表示的特定 Excel 实例?如果没有,您还可以查看像这样访问正在运行的 Excel 实例:support.microsoft.com/kb/316126。知识库文章使用 C#,但调用(例如 System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"))应该很容易翻译。
-
只是为了补充 Ian 的回答:$Excel = [Runtime.Interopservices.Marshal]::GetActiveObject('Excel.Application') 将检索现有的 Excel 实例。
-
谢谢。但是,我刚刚尝试过,然后执行
$Excel.Visiable = $true- 它仍然打开了一个新的 Excel 窗口。 -
@BorekBernard,
[Runtime.Interopservices.Marshal]::GetActiveObject('Excel.Application')似乎确实有效,假设现有实例是由同一用户创建的,正如 user2587683 的回答所述。另请注意,您将.Visible错误输入为.Visiable。
标签: excel powershell automation