2012-09-19 124 views
2

世界!如何僅在Excel工作簿打開VBScript時才運行宏?

我想在我的工作自動完成報表任務,我有以下情況:

我需要通過使用腳本在工作簿執行宏。我試着寫一個VBScript來完成這項工作,這是它的顯著部分:

Set objWbk = GetObject("***Path***\test.xlsm") 

objWbk.Application.Run "test.xlsm!test" 

WScript.Quit 

宏運行完美。我真正的問題是,我只想在工作簿打開的情況下執行報告。

有沒有一種方法(在vbs或vba中)來確定該工作簿是否打開? (順便說一句,它位於我的網絡上的另一臺計算機上)

+0

你想,如果工作簿已經打開運行宏?或者你想在'GetObject()'完成打開工作簿之後運行宏嗎? –

+0

@AnsgarWiechers只有當工作簿已經打開時 –

回答

1

既然你要運行,只有當工作簿已經打開的宏,這樣的事情可能工作:

wbName = "test.xlsm" 
wbFullName = "***Path***\" & wbName 

Set xl = GetObject(, "Excel.Application") 
For Each wb In xl.Workbooks 
    If LCase(wb.Path & "\" & wb.Name) = wbFullName Then 
    wb.Application.Run wbName & "!test" 
    End If 
Next 
+0

您的解決方案奏效了,謝謝! –

1

這沒有完全測試,可能需要一點修改,但看看它是否得到你所需要的。

On Error Resume Next 
Set objWbk = GetObject("***Path***\test.xlsm") 

If Err.Number = 0 Then objWbk.Application.Run "test.xlsm!test" 

wScript.Quit 
相關問題