2

我正在尝试使用 python 运行一个 excel 宏,然后关闭 excel。我有以下内容:

 import win32com.client
 import os

 xl = win32com.client.DispatchEx("Excel.Application")
 wb = xl.workbooks.open("X:\Location\Location2\File1.xlsm")
 xl.run("File1.xlsm!WorkingFull")
 xl.Visible = True
 wb.Close(SaveChanges=1)
 xl.Quit

如果我取出 xl.run("File1.xlsm!WorkingFull") ,我的脚本将正常打开和关闭当我运行它时,我收到以下错误:

回溯(最后一次调用):文件“C:\Python27\File1.py”,第 6 行,在 xl.run("File1.xlsm!WorkingFull") 文件“”,第 2 行,在运行 com_error: (-2147352567 , '发生异常。', (0, u'Microsoft Excel', u"无法运行宏 'File1.xlsm!WorkingFull'。此工作簿中可能没有该宏,或者所有宏都可能被禁用。", u' xlmain11.chm', 0, -2146827284), 无)

我启用了宏并且我知道它在工作簿中,有什么问题?

4

1 回答 1

5

请参阅下面使用 python 运行 Excel 宏的代码。您可以在此站点链接中找到此代码。使用此站点获取有关 excel、vba 和 python 脚本的其他参考资料,这些参考资料将来可能会有所帮助。

from __future__ import print_function
import unittest
import os.path
import win32com.client

class ExcelMacro(unittest.TestCase):
    def test_excel_macro(self):
        try:
            xlApp = win32com.client.DispatchEx('Excel.Application')
            xlsPath = os.path.expanduser('C:\test1\test2\test3\test4\MacroFile.xlsm')
            wb = xlApp.Workbooks.Open(Filename=xlsPath)
            xlApp.Run('macroName')
            wb.Save()
            xlApp.Quit()
            print("Macro ran successfully!")
        except:
            print("Error found while running the excel macro!")
            xlApp.Quit()
if __name__ == "__main__":
    unittest.main()
于 2014-02-20T21:18:49.233 回答