2016-02-16 35 views
1

我敢肯定,這是一個非常基本的問題,有一個非常基本的答案,但到目前爲止,我無法讓我的Excel宏工作。Excel VBA Workbooks.open與可選參數

我想打開Excel工作簿並輸入可選的密碼參數。但是,每當我這樣做時,我都會收到錯誤編譯期望錯誤:命名參數

這是我當前的代碼

Sub password_opening_test() 
Workbooks.Open Filename:="E:\password protecting macrotest.xlsx",,,,Password:="test" 
Range("G7").Select 
ActiveCell.FormulaR1C1 = "hello" 
ActiveWorkbook.Save 
ActiveWindow.Close 
End Sub 

我也嘗試過通過在逗號之間的相加平方brakets但我仍然收到錯誤(這是由第一個逗號高亮顯示)。

非常感謝您閱讀

+1

嘗試沒有額外逗號'Workbooks.Open名:=「E:\密碼保護macrotest.xlsx」,密碼:=「測試」'只要當你指定你傳遞了哪個參數(即 - 'Password:=')時,其他參數的額外逗號是不必要的。 –

+0

非常感謝斯科特,這工作! – JAir

回答

2

我認爲有兩種方法可供選擇:

  1. 正如他的評論斯科特細節 - 讓你擺脫逗號

2. 只要使用的參數在正確的位置

Sub password_opening_test() 
    Workbooks.Open "E:\password protecting macrotest.xlsx",,,,"test" 
    Range("G7").Select 
    ActiveCell.FormulaR1C1 = "hello" 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
End Sub 

爲了記錄,我更喜歡Scott的方法,因爲它在未來的代碼重訪中更具可讀性。我喜歡用行分隔符,所以它看起來是這樣的:

Sub password_opening_test() 
    Workbooks.Open _ 
     Filename:="E:\password protecting macrotest.xlsx", _ 
     Password:="test" 
    Range("G7").Select 
    ActiveCell.FormulaR1C1 = "hello" 
    ActiveWorkbook.Save 
    ActiveWindow.Close 
End Sub 
+0

所以我必須問。如果兩個選項都起作用,哪一個更好的做法是:1)'Workbooks.Open「E:\ password protect macrotest.xlsx」,Password:=「test」'或2)'Workbooks.Open「E:\ password保護macrotest.xlsx「,,,,」測試「'?備選方案1似乎是更好的做法。 –

+0

@IronMan在你身上 - 我更喜歡在特定的佈局中拼出參數 - 我會添加回答。 – whytheq

+0

你的回覆已經死了。我想這將取決於個人編碼器。 –