2012-05-10 38 views
4

我想使用vbs調用我的excel宏。這是我的代碼片段。如果使用vb腳本進行調用,宏將被禁用

Set objExcel = CreateObject("Excel.Application") 
Set objWorkbook = objExcel.Workbooks.Open("C:\Folder\Test_PO.xls") 
objExcel.Application.Visible = True 
objExcel.Application.Run "C:\Folder\Test_PO.xls!Data_Analysis" 
objExcel.ActiveWorkbook.Close 
objExcel.Application.Quit 
WScript.Echo "Finished." 
WScript.Quit 

現在,這裏的問題是,我能夠打開該文件,但宏不知何故被這裏禁用,並顯示我'macro may not be present or may be disabled'。我相信我打電話正確的宏名稱,但只要文件打開加載項選項卡,其中我已配置宏從運行得到dissapeared.This不會打開,如果我手動打開文件,我可以看到選項卡並從標籤本身運行宏。任何建議如何我可以克服這個問題,並讓宏運行?

+0

如果宏是在一個插件,你需要加載插件。 – assylias

回答

6

試試這個

Dim objExcel, objWorkbook 

Set objExcel = CreateObject("Excel.Application") 
Set objWorkbook = objExcel.Workbooks.Open("C:\Folder\Test_PO.xls") 
objExcel.Visible = True 
objExcel.Run "Data_Analysis" 
objWorkbook.Close 
objExcel.Quit 

Set objWorkbook = Nothing 
Set objExcel = Nothing 

WScript.Echo "Finished." 
WScript.Quit 

編輯

如果宏是一個模塊,然後上面會幫助中如果宏爲片狀說,工作表Sheet然後更換線

objExcel.Run "Data_Analysis" 

objExcel.Run "sheet1.Data_Analysis" 

隨訪

嘗試此代碼。

Dim objExcel, objWorkbook, ad, FilePath 

Set objExcel = CreateObject("Excel.Application") 
objExcel.Visible = True 

For Each ad In objExcel.AddIns 
    If ad.Name = "Converteam.xla" Then 
     FilePath = ad.Path & "\Converteam.xla" 
     Exit For 
    End If 
Next 

objExcel.Workbooks.Open (FilePath) 

Set objWorkbook = objExcel.Workbooks.Open("C:\Folder\Test_PO.xls") 

objExcel.Run "Data_Analysis_Converteam" 
objWorkbook.Close 
objExcel.Quit 

Set objWorkbook = Nothing 
Set objExcel = Nothing 

WScript.Echo "Finished." 
WScript.Quit 

說明

當您使用CreateObject,加載項是不是默認安裝的。請看這個鏈接。

主題:http://support.microsoft.com/kb/213489/

您必須加載外接,然後調用相關的宏:加載項在Excel

鏈接使用CreateObject命令時不會加載。此外,您的宏的名稱不Data_AnalysisData_Analysis_Converteam

HTH

+0

再次遇到同樣的問題。文件被打開,但我收到消息宏可能不存在或可能在此文件中禁用。此外,加載項標籤得到dissapeared sumhow如果我只是試圖打開該代碼的文件。宏獲取diabled sumhow,同時通過vbs打開文件 – justin3250

+0

宏在哪裏?它是在表單代碼區還是模塊代碼區? –

+0

模塊代碼區。我已經創建了它,可以通過添加項選項卡 – justin3250

1

爲了增加Siddhart的答案 - 你可以加載您所需要的加載項在VBScript中這樣的:

objExcel.RegisterXLL("analys32.xll") 'For XLL addins 
objExcel.Workbooks.Open(objExcel.LibraryPath & "\analysis\atpvbaen.xla") 'For standard XLA addins 
objExcel.Workbooks.Open("C:\Program Files\MyAddins\MyAddin.xla") 'for custom XLA addins 
+0

是的,這是我給出的鏈接中提到的,但那是不正確的方式:)原因是,你的加載項將不會是真的,因爲你的加載項將在'xl.LibraryPath' –

+0

爲什麼它不是正確的辦法? – assylias

+0

更新了上面的評論 –