我尝试使用“xlwings_0.3.4”进行简单测试,打开一个 excel .xltm 文件并再次保存,以确保保留 VBA 模块。我无法让它工作。
如果我在保存步骤中提供文件扩展名,则该文件将保存为 .xlsx 文件。该模块被随身携带,但随着扩展名的更改,它不会被识别为有效的 VBA 模块。如果我不指定文件扩展名,它会自动保存为 .xlsx:
WB=xlwings.Workbook('template.xltm')
WB.save('outfile')
WB.close()
这给出了一个 xlsx 文件。
尝试将文件设置为 xlsm 会产生错误:
WB.save('outfile.xlsm')
WB.close()
xl_workbook.SaveAs(path)
会产生错误:
xl_workbook.SaveAs(path)
File "<COMObject Open>", line 7, in SaveAs
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, u'Microsoft Excel', u'This extension can not be used with the selected file type. Change the file extension in the File name text box or select a different file type by changing the Save as type.', u'xlmain11.chm', 0, -2146827284), None)
这似乎是由返回的应用程序对象所固有的GetActiveObject('Excel.Application')
。
是否有开关(如'keep_VBA=True'
openpyxl 中的开关?),还是不能用 xlwings 保存 xlsm 文件?