2016-12-28 116 views
2

我在一個Excel工作表「數據」的Sheet1中創建了一個「測試」宏並試圖把它從VBS文件不能執行從.VBS宏文件

Set objExcel = CreateObject("Excel.Application") 
Set objWorkbook = objExcel.Workbooks.Open("C:\xxx\xxxx\xxxx\VB\Data.xlsm") 

objExcel.Application.Run "C:\xxx\xxxx\xxxx\VB\Data.xlsm!Sheet1.Test" 
objExcel.ActiveWorkbook.Close 

objExcel.Application.Quit 

WScript.Quit 

我收到以下錯誤:宏可能不在此工作簿中或所有宏可能被禁用。 代碼:800A03EC

我將宏安全性更改爲「啓用所有宏」,並在開發宏設置下選中了「信任訪問VBA項目模型」。但仍然沒有運氣

回答

3

你可以嘗試沒有運行,你可以從工作簿和工作表對象明確調用你的功能!

Set objExcel = CreateObject("Excel.Application") 
Set objWorkbook = objExcel.Workbooks.Open("C:\xxx\xxxx\xxxx\VB\Data.xlsm") 
Set Sheet1 = objWorkbook.Sheets(1) 
Sheet1.Test 
objExcel.ActiveWorkbook.Close 

objExcel.Application.Quit 

WScript.Quit 
+0

非常棒!它的工作現在。謝謝 –

+0

優秀!!它的工作現在。謝謝。另外我通過使用run找到了其他方法。我發佈該代碼也接受這個答案 –

+0

@Ravi Adabala,嘿,歡呼!我知道你的另一種方式,但是當通過'運行'來完成多應用程序項目時,我會感到緊張。 – CommonSense

1

謝謝大家,我找到了解決上述問題的方法。可能是問題是,我試圖運行一個宏而不打開excel工作簿,但不知道。無論如何,這是工作代碼。我能夠從vbs運行宏現在

Option Explicit 
Dim xlApp, xlBook 

Set xlApp = CreateObject("Excel.Application") 
set XlBook = xlApp.Workbooks.Open("C:\xxx\xxx\xxx\xxx\Data.xlsm") 
xlApp.Run "Sheet1.Test" 
xlBook.Close 
xlApp.Quit 
Set xlBook = Nothing 
set xlApp = Nothing 
WScript.Echo "Finished" 
WScript.Quit 
+0

你知道你可以在不打開'Workbook'的情況下運行MACRO,對嗎?這使得它更快 –