2012-07-24 200 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