「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')
。
スイッチはありますか (openpyxl のスイッチのようなもの'keep_VBA=True'
ですか?)、または xlwings で xlsm ファイルを保存することはできませんか?