2012-07-24 153 views
2

我想用python运行一个excel宏,然后关闭excel。我有以下几点:Python运行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,'Exception occurred。',(0,u'Microsoft Excel',u“)无法运行宏'File1.xlsm!WorkingFull'。宏可能在此工作簿中不可用或者所有宏可能被禁用。“,u'xlmain11.chm',0 ,-2146827284),无)

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

+1

你试过减少呼叫吗? 'xl.run( “WorkingFull”)'? – SeanC 2012-07-24 17:47:08

+0

确保你的宏不是私人的。也可以尝试'xl.run(wb.WorkingFull)'看看是否有效。 – KFleschner 2012-07-24 17:48:50

+0

工作,但我得到的错误,但它似乎运行我的宏。我知道这一点的唯一原因是我的宏保存了一个文件。 Traceback(最近一次调用的最后一个):运行com_error中的第2行的文件“C:\ Python27 \ file1.py”,第6行,在 xl.run(“WorkingFull”)文件“ (-2147352567,'发生异常',(0,None,None,None,0,-2146788248),None) – 2012-07-24 17:54:49

回答

3

请参阅下面的代码使用python运行Excel宏。您可以在此Site - Link中找到此代码。使用本网站的其他参考为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() 
+2

虽然此链接可能回答此问题,但最好在此处包含答案的基本部分并提供该链接供参考。如果链接页面更改,则仅链接答案可能会失效。 – cpburnz 2014-02-20 21:41:25

+0

cpBurnz - 我理解你的担忧,我已经放置了上面的代码,向用户展示如何使用python运行excel宏。如果您可以对我的答案投票表示赞赏,那将不胜感激。 – Developer 2014-02-20 23:29:40

+0

看起来好多了。 – cpburnz 2014-02-21 01:11:16