运行多个宏的Python/Excel/VBA/Macro错误消息

2024-09-29 06:30:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常奇怪的问题,我试了几天来解决它,但我一直没有解决,我想知道是否有人可以帮助我。 我想顺序运行多个excel文件中的宏,即excel 1和excel 2都有宏a和b

wb = xw.Book("excel1.xlsb", update_links=False)
wb.macro("macro1")()
wb.macro("macro2")()
wb.save()
wb.close()

启动计算机后的第一次运行该操作不会出现任何问题,macro1和Macro2都会执行。 当我打开excel2文件时,第二个宏显示一条错误消息

wb = xw.Book("excel2.xlsb", update_links=False)
wb.macro("macro1")()
wb.macro("macro2")()
wb.save()
wb.close()

在excel中:

运行时错误“1004”:

应用程序定义或对象定义错误

在jupyter中:

com_错误:(-2147352567,‘发生异常’,(0,无,无,无,0,-2146788248),无)

但是,如果我拆分代码并运行

wb = xw.Book("excel2.xlsb", update_links=False)
wb.macro("macro1")()

我用光标点击excel,excel被激活,我回到jupyter笔记本并执行

wb.macro("macro2")()
wb.save()
wb.close()

然后它工作了,我没有收到这个错误消息。一般来说,这对我来说似乎很奇怪,我试图通过使用seal_focus=True激活wb来复制我在代码中手动执行的操作

wb = xw.Book("excel2.xlsb", update_links=False)
wb.macro("macro1")()
wb.activate(steal_focus=True)
time.sleep(5)
wb.macro("macro2")()
wb.save()
wb.close()

但是我收到了同样的错误信息。宏在模块中。 如果我再次拆分代码,即我第一次运行

wb = xw.Book("excel2.xlsb", update_links=False)
wb.macro("macro1")()

然后:

wb.activate(steal_focus=True)
wb.macro("macro2")()
wb.save()
wb.close()

第一次执行第二部分时,我得到了相同的错误消息。但是,如果我第二次执行第二部分,它就会工作。但这对我来说不是一个解决方案,因为它应该一次性运行。我似乎无法理解,也无法找到解决办法。有人有可能找到解决办法吗?我遗漏了什么吗

非常感谢

汤姆


Tags: falseclosesave错误updatelinksexcelmacro