问题描述
使用xlsxwriter库创建excel文件时,我试图插入宏。我遵循了文档Working with VBA Macros中的教程示例。该文件已成功创建,但在使用Microsoft Excel打开时,提示以下消息:
注意:
- 我正在Windows 10计算机上使用Microsoft Office Excel 2007(12.0.6425.1000)SP2 MSO版本打开文件,并提示上述消息。
- 打开Libreoffice很好,但是单击该按钮没有任何反应(因为它无法读取VBA)。
请帮助。
[更新]: 下面是我使用的代码:
def action_macro_test(self):
workbook = xlsxwriter.Workbook("/home/user1/Desktop/macro_test.xlsm")
worksheet = workbook.add_worksheet("Sheet1")
worksheet.set_column('A:A',30)
# Add the VBA project binary.
workbook.add_vba_project('./vbaProject.bin')
# Show text for the end user.
worksheet.write('A3','Press the button to say hello.')
# Add a button tied to a macro in the VBA project.
worksheet.insert_button('B3',{'macro': 'say_hello','caption': 'Say Hello!','width': 80,'height': 30})
workbook.close()
解决方法
您使用宏创建了一个工作簿,但将其另存为lastrow
。 Excel不允许.xlsx
文件中的宏。它们必须为.xlsx
。
我运行了您的代码,仅修改了路径,它创建了一个按预期打开的文件:
import xlsxwriter
def action_macro_test(self):
workbook = xlsxwriter.Workbook("macro_test.xlsm")
worksheet = workbook.add_worksheet("Sheet1")
worksheet.set_column('A:A',30)
# Add the VBA project binary.
workbook.add_vba_project('./vbaProject.bin')
# Show text for the end user.
worksheet.write('A3','Press the button to say hello.')
# Add a button tied to a macro in the VBA project.
worksheet.insert_button('B3',{'macro': 'say_hello','caption': 'Say Hello!','width': 80,'height': 30})
workbook.close()
action_macro_test(None)
输出:
我使用了XlsxWriter发行版的examples目录中的vbaProject.bin
文件,并使用几种不同版本的Excel对其进行了测试。
可以,您可以在发行版的examples目录中尝试macros.py
示例,看看是否适合您。之后,请确保您的示例中有一个有效的vbaProject.bin
文件。
事实证明文件vbaProject.bin路径设置不正确。现在工作正常。对不起,误报警。谢谢你的帮助。