Запуск макроса из моего файла PERSONAL.XLSB в другом файле Excel - PullRequest
0 голосов
/ 30 сентября 2019

Я использую Python и PyCharm Community и пытаюсь автоматизировать некоторые из моих работ в Excel. Я очень новичок в Python. Я создал своего рода тест, чтобы выяснить, прежде чем запускать код, используя мои настоящие файлы Excel.

Я хочу:

  1. Открыть определенный файл Excel, в данном случае: «MarcTest.xlsm». Это файл xlsm без сохраненных макросов.

  2. Откройте мой файл PERSONAL.XLSB, который содержит ВСЕ мои сохраненные макросы.

  3. Запустите определенный макрос (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. Я понятия не имею, как это можно сделать или даже если это то, что нужно сделать.

Любая помощь будет высоко ценится.

...