Ошибка доступа к файлу pywin / win32com при сохранении электронной таблицы с поддержкой макросов - PullRequest
0 голосов
/ 05 августа 2020

У меня есть следующий код, который читает существующий файл 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, и он читает файл нормально, поэтому я не понимаю, почему он не работает . Есть идеи?

1 Ответ

0 голосов
/ 10 августа 2020

Я понял, что проблема заключается в том, как обрабатывается путь к файлу. После нескольких проб и ошибок кажется, что правильным способом записи путей (по крайней мере, в Windows OS) является использование двойных обратных косых черт: "C:\\Users\\blablah\\".

...