Я попробовал простой тест с использованием «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?) или невозможно сохранить файлы xlsm с помощью xlwings?