使用xlwings从此工作簿调用vba宏

2024-04-27 22:23:38 发布

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

我正在努力运行通过xlwings激活的vba宏

我的宏保存在此工作簿区域中,而不是保存在模块中。当我对保存在模块中的宏使用类似的方法时,它工作正常

PythonScript打开工作簿并运行模块。 然后,它尝试运行工作簿不同选项卡中的另一个宏

import xlwings as xw 

wb = xw.books.open(‘myworkbook’)
ExcelMacro = wb.macro(‘1stmacro’)
ExcelMacro()

#1stmacro位于模块中#这很有效

ExcelMacro = wb.macro(‘ThisWorkbook.2ndmacro’)
ExcelMacro()

#第二个宏位于此工作簿中,而不是模块中。全名由本工作簿给出。第二个宏采用第二个宏的形式。 用于激活此功能的按钮包含在与打开工作簿的选项卡不同的选项卡中

当我保存工作簿以打开此按钮所在的位置时,它会工作;当它保存在除此之外的其他选项卡上时,它将不起作用

任何帮助都将不胜感激


Tags: 模块方法import区域asxlwingsvbabooks
2条回答

另一个解决方案:

假设您已将名为book1.xlsm的电子表格保存在文档文件夹中(当然,您可以进行调整)

import xlwings as xw
spreadsheet_path = 'C:\\Users\your_user\\Documents\\book1.xlsm'

wb = xw.books.open(spreadsheet_path)
ExcelMacro = wb.macro('Sheet1.message1')
ExcelMacro()

ExcelMacro = wb.macro('Sheet2.message2')
ExcelMacro()

ExcelMacro = wb.macro('Module1.hello_from_module1')
ExcelMacro()

无论哪个选项卡打开,我都让所有宏正常工作。你必须把整个电子表格放在你的路径上

祝你好运😊 如果这仍然不能解决您的问题,请告诉我

是否需要从此工作簿而不是从任何模块调用宏? 如果可以的话,使用有效的方法总是比考虑变通方法更安全的

由于带有宏的工作簿无论如何都是使用.xlsm.xlsb扩展名保存的,因此不应阻止您在其中插入模块

alt+F11,在左上角右键单击“此工作簿”,然后选择插入,模块

模块将被创建,您可以复制粘贴,甚至拖放宏

如果不可能的话,现在让我说

相关问题 更多 >