在另一个Excel文件上从我的PERSONAL.XLSB运行宏

时间:2019-09-30 16:43:44

标签: python excel win32com

我正在使用Python和PyCharm社区,并试图自动化一些Excel工作。我是Python的新手。在使用实际的excel文件运行代码之前,我已经进行了某种测试以弄清楚。

我要:

  1. 打开一个特定的excel文件,在这种情况下为“ MarcTest.xlsm”。这是一个xlsm文件,没有保存的宏。

  2. 打开我的PERSONAL.XLSB文件,其中包含我所有已保存的宏。

  3. 从我的MarcTest.xlsm文件中的PERSONAL.XLSB文件运行特定的宏(Format_Blank)。

我的问题是我的代码仅执行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。我不知道该怎么办,即使那是需要做的。

任何帮助将不胜感激。

0 个答案:

没有答案