2013-06-28 143 views
0

我有下面顯示的代碼,它打開工作簿並運行相應的宏。通過excel運行此腳本工作得很好,但使用相同的代碼運行.vbs文件不會運行宏。我已經嘗試雙擊該文件並通過「cscript.exe LaunchMacro.vbs」在cmd提示符下運行它。另外,使用WScript.Echo不會打印到我的命令行。我在這裏錯過了什麼嗎?VBA:無法實現excel外的Excel VBS

謝謝!


Option Explicit 

Sub LaunchMacro() 
Dim xlApp, xlBook  
Dim oShell: Set oShell = CreateObject("WScript.Shell")  
oShell.CurrentDirectory = "H:" 
Set xlApp = CreateObject("Excel.Application")  
xlApp.Visible = True 
xlApp.Application.Visible = False 

Set xlBook = xlApp.Workbooks.Open("H:\SW Tool Resources\test\tester.xlsm") 
MsgBox ("File Opened") 
xlApp.DisplayAlerts = False 
xlApp.Application.Run ("tester.xlsm!Module3.split") 
MsgBox ("Application Should Have Run") 
xlBook.Saved = True 
xlApp.Quit 

Set xlBook = Nothing 
Set xlApp = Nothing 

End Sub 
+0

即使有明顯的相似之處VBS是不一樣的VBA(應用程序的Visual Basic),不幸的是,這會不會是複製和粘貼一樣簡單來自Excel VBA的代碼。 – ChrisProsser

+0

我可以問一下將代碼移動到.vbs腳本的動機是什麼? – ChrisProsser

回答

1

VBS和VBA是不同的。

儘量把只有這個代碼在VBS文件並運行它:

Set xlApp = CreateObject("Excel.Application")  
xlApp.Visible = True 
xlApp.Application.Visible = False 

Set xlBook = xlApp.Workbooks.Open("H:\SW Tool Resources\test\tester.xlsm") 
MsgBox ("File Opened") 
xlApp.DisplayAlerts = False 
xlApp.Application.Run ("tester.xlsm!Module3.split") 
MsgBox ("Application Should Have Run") 
xlBook.Saved = True 
xlApp.Quit 

我沒有測試它,並且很可能不會成功。但它應該把它放在正確的方向。

編輯:

這裏是應該幫助您開始使用VBS:一個腳本可以定義一些功能,但只運行他們,如果你給他們打電話。

例如,這將只運行Sub1

Sub Sub1() 
    MsgBox "1" 
End Sub 
Sub Sub2() 
    MsgBox "2" 
End Sub 
Sub1 
+0

+1問題很可能是程序永遠不會被調用。不過,我會刪除'xlApp.Application.Visible = False'這一行。 'xlApp.Visible'和'xlApp.Application.Visible'是完全相同的屬性。首先顯示應用程序並在下一步中再次隱藏它是毫無意義的。另外,我會在調試時設置'xlApp.DisplayAlerts = True'。 –

+0

我會添加到Ansgar評論:當您使'xlApp.Visible = True' Excel加載界面(這是慢),並從現在開始的每個操作將更新界面(這是緩慢的)。我會在調試過程中保持它可見,然後在一切正常時保持不可見狀態。 – stenci