Я использую Python и PyCharm Community и пытаюсь автоматизировать некоторые из моих работ в Excel. Я очень новичок в Python. Я создал своего рода тест, чтобы выяснить, прежде чем запускать код, используя мои настоящие файлы Excel.
Я хочу:
Открыть определенный файл Excel, в данном случае: «MarcTest.xlsm». Это файл xlsm без сохраненных макросов.
Откройте мой файл PERSONAL.XLSB, который содержит ВСЕ мои сохраненные макросы.
Запустите определенный макрос (Format_Blank) из моего файла PERSONAL.XLSB в моем файле MarcTest.xlsm.
У меня проблема в том, что мой код выполняет только макрос в файле PERSONAL.XLSB, и я не могу найти решение, как это сделать иначе.
Я пытался сделать руководство, расположенное здесь: https://redoakstrategic.com/pythonexcelmacro/ Но так как у меня уже есть файл excel, созданная половина руководства для меня бесполезна. В любом случае, процесс архивирования файла и т. Д. Является громоздким, и, в конце концов, он не работает для меня.
Вот мой текущий код:
import win32com.client
xl = win32com.client.Dispatch('Excel.Application')
xl.Visible = True
File = xl.Workbooks.Open(Filename=r'Filepath to MarcTest.xlsm')
MacroFile = xl.Workbooks.Open('Filepath to PERSONAL.xlsb')
xl.Application.Run('PERSONAL.XLSB!Format_Blank')
В результате макрос выполняется в PERSONAL.XLSB, а не в MarcTest.xlsm. Я не получаю никаких ошибок.
Если я сделаю:
xl.Application.Run('Format_Blank')
Я получу тот же результат, также без ошибок.
Если я сделаю:
xl.Application.Run('MarcTest.xlsm!Format_Blank')
Я получу ошибку:
Traceback (most recent call last):
File "C:/Users/ichoc/PycharmProjects/mongodb/Editing the Excel Doc.py", line 46, in <module>
xl.Application.Run('MarcTest.xlsm!Format_Blank')
File "<COMObject <unknown>>", line 14, in Run
File "C:\Users\ichoc\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 287, in _ApplyTypes_
result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', "Cannot run the macro 'MarcTest.xlsm!Format_Blank'. The macro may not be available in this workbook or all macros may be disabled.", 'xlmain11.chm', 0, -2146827284), None)
Это заставляет меня поверить, что мне нужно каким-то образом перенести макрос из PERSONAL.XLSBв MarcTest.xlsm. Я понятия не имею, как это можно сделать или даже если это то, что нужно сделать.
Любая помощь будет высоко ценится.