【问题标题】:Excel open workbook not found找不到 Excel 打开的工作簿
【发布时间】:2021-10-26 10:08:39
【问题描述】:

我有两个包含宏的 Excel 文件。

一个已经打开,第二个从 powershell 打开并运行宏。

现在在宏中我想切换回第一个文件:

Windows("file1.xlsm").Activate
Sheets("sheet1").Activate

不起作用 -> 运行时错误(找不到文件/窗口)。

如果我手动打开第二个文件,一切正常。

所以看起来如果第二个文件是通过 powershell 打开的,它不会“看到”已经打开的工作簿。

知道如何解决这个问题吗?

【问题讨论】:

  • 他们都在同一个 Excel 会话中吗? PowerShell 不会创建一个新会话并在其中打开第二个会话吗?尝试查看 TaskManager 进程并查看您可以看到多少 Excel.exe 已处理。如果不止一个,我可以向您展示一种识别必要的方法。如果只有一个,这仅意味着没有在任何其他应用程序中创建其他工作簿...
  • @ASD 是的,PowerShell 没有打开其他文件,Excel 自己打开了。两个 Excel 实例都在单独的运行空间中运行,因此您不能简单地在文件之间切换到另一张工作表
  • 没错,伙计们,我就是这么想的。它在另一个进程中打开第二个文件。那么,法恩,你的计划是什么?
  • 好的。我想您知道创建的工作簿全名。对不对?

标签: excel vba powershell


【解决方案1】:

这就是我解决这个问题的方法:

而不是为 Excel 启动一个新会话:

$Excel = New-Object -ComObject Excel.Application

我只是在同一个会话中打开新文件:

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

【讨论】:

    猜你喜欢
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多