У меня есть следующий код, который читает существующий файл Excel, добавляет макрос, а затем пытается сохранить его в другом файле Excel с поддержкой макросов.
import win32com.client as win32
import comtypes, comtypes.client
name="//path//to//test1.xlsx"
sheetName = "Sheet1"
xlOpenXMLWorkbookMacroEnabled = 52
xl=win32.gencache.EnsureDispatch('Excel.Application')
xl.Visible=True
ss = xl.Workbooks.Open(name, False, True)
ss.Worksheets(sheetName).Activate()
xlmodule = ss.VBProject.VBComponents.Add(1)
VBAcode='''sub VBAMacro()
Range("A1").Value = 1
end sub'''
xlmodule.CodeModule.AddFromString(VBAcode)
#xl.Run(name+'!VBAMacro')
ss.SaveAs(Filename=name[:-5] + '-macro.xlsm', FileFormat=xlOpenXMLWorkbookMacroEnabled)
xl.Quit()
При этом я был принимая во внимание вопросы о xlOpenXMLWorkbook
здесь и здесь . Однако, когда я пытаюсь запустить это, я получаю сообщение об ошибке:
com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', "Microsoft Excel cannot access the file ...
Я тестировал этот код без строки SaveAs, и он читает файл нормально, поэтому я не понимаю, почему он не работает . Есть идеи?