2011-12-07 26 views
1

我有一個工作簿,它有很多不同的宏,以及映射文件。我想創建一個.bat文件來打開這個工作簿並運行一個特定的宏。通過.bat文件將參數傳遞給啓用宏的工作簿?

我不希望這個宏運行每次有workbook_open事件的時候,我只希望它在該批處理文件說

"C:\~\Excel.exe" "c:\workbook1.xlsm" /Macro1 

或類似的東西運行。

這可能嗎?

謝謝!

+0

這裏沒有命令行選項。你可以使用vbs文件而不是bat文件:這會給你更多的控制權。 –

+0

另一種可能性是批處理文件創建一個文本文件(Echo Macro1 >> workbook1.txt)。工作簿1中的Auto_Open宏可以讀取該文件,保存其內容並將其刪除。然後,uto_Open將在文件中執行參數。注意:Auto_Open是一個Excel 2003工具。對於更高版本的Excel可能有更好的技術。 –

+0

VBS文件聽起來不錯,但我無法弄清楚如何使它工作。你可以請張貼一個代碼樣本來打開book1.xlsm並運行Macro1嗎? – fomoz

回答

2

如果我理解正確,你的vbs腳本可能看起來像這樣 - 我猜可以爲你自己添加文件名和錯誤處理變量。

Sub RunAMacro(strMacroName$) 
    Dim oExcel as Object 
    Set oExcel = CreateObject("excel.application") 
    oExcel.Workbooks.Open "c:\path\to\file.xls" 
    oExcel.Run strMacroName 'This is the name of the macro 
    ' decide here if you need to save, or just close, or whatever 
    oExcel.ActiveWorkbook.Saved = True 
    oExcel.ActiveWindow.Close 
    oExcel.Quit 
    Set oExcel = Nothing 
End Sub 

RunAMacro("YourMacroName") 
+0

完美地工作,只需要刪除$符號和「作爲對象」。非常感謝! – fomoz

+0

我剛剛編輯了答案(幾年後......)。 $ strMacroName是一個變量的PHP語法,而'...(strMacroName $)'基本上與'...(strMacroName as String)相同' – ExternalUse