我遇到了同样的问题,并提出了一个解决方案。不幸的是,当使用“启动Excel”命令时,它总是会打开一个新的(Windows)Excel实例。第二个工作簿看不到第一个工作簿中的宏,我相信你是通过阅读回复找到的。因此,我们必须在与第一个工作簿相同的(Windows)实例中打开第二个工作簿;这需要更多的步骤。
1.使用“启动Excel”将宏Excel工作簿打开到%ExcelInstance%
2.使用“单击窗口中的UI元素”来单击文件
3.使用“单击窗口中的UI元素”来单击“打开”
4a.最简单的方法是将workbook2固定到打开选项的顶部,并使用“单击窗口中的UI元素”来单击文件名。以下是一种更彻底的方法(适用于任何没有固定工作簿的人):
4b.使用“单击窗口中的UI元素”单击浏览->使用“等待图像”找到打开的对话框,我通常选择闪烁光标左侧的“文件名:”使用“发送键”发送文档路径/文件名,然后按Enter键。例如C:\Documents\accounts.xlsx{Return}
现在,新的Excel工作簿将被打开,并将与宏工作簿位于同一个(Windows)实例中,并且可以访问所有宏。
- 使用“附加到正在运行的Excel”对工作簿2进行寻址,并将其附加到原始的Power Automation实例%ExcelInstance%
警告:附加到%ExcelInstance%的最后一个工作簿将是bot将读取/写入的唯一工作簿。另外:如果您有一个“附加到正在运行的Excel”命令,该命令已经是%ExcelInstance%的活动工作簿,则bot将无法声明该文件不存在。因此,请随意在工作簿之间来回跳转,但您不能有多余的“附加到运行Excel”命令,否则它将杀死您的机器人。
现在您的工作簿2已打开,它在%ExcelInstance%上处于活动状态,并且可以从宏工作簿中查看宏。
- 使用“运行Excel宏”在活动工作簿(workbook2)上运行请求的宏。
在本例中,Excel实例为%ExcelInstance%,宏的格式与workbook2看到宏时的格式相同,就像您去查看->宏,并自己选择它一样:“[WorkbookFilename]”![宏名称]。
下面是我的一个例子: 'Month End Checklist Rev 02.17.20_macros.xlsm'!Clear_All