我正在使用Python和PyCharm社区,并试图自动化一些Excel工作。我是Python的新手。在使用实际的excel文件运行代码之前,我已经进行了某种测试以弄清楚。
我要:
打开一个特定的excel文件,在这种情况下为“ MarcTest.xlsm”。这是一个xlsm文件,没有保存的宏。
打开我的PERSONAL.XLSB文件,其中包含我所有已保存的宏。
从我的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。我不知道该怎么办,即使那是需要做的。
任何帮助将不胜感激。