2017-09-25 49 views
0

首先,道歉混淆問題。我希望下面給出更多的解釋,我要問什麼。如何調用powershsell腳本時使用文件夾變量

在VBA中,我需要使用一個變量來指向包含PowerShell腳本位置的Excel單元格,因爲這對於不同的用戶可能會有所不同。

當我運行下面的代碼時,它不會帶來任何錯誤。窗口彈出並消失。我認爲這是值得的語法這裏 - 「」殼牌」,當我進入位置時,它完美的作品。

Private Sub Export_Click() 

Dim Asn As String 
Dim QuestionToMessageBox As String 
Dim Power As String 

Shell = Worksheets("Input").Range("A4").Value 

    QuestionToMessageBox = "Are you sure you would like to proceed?" 

    Ans = MsgBox(QuestionToMessageBox, vbYesNo, "Are you sure you would like to proceed?") 

    If Asn = vbNo Then 
     Exit Sub 
    Else 

      Call Shell("powershell -noexit -file ""Shell", vbMaximizedFocus) 
    End If 
MsgBox "The Exportation has completed", vbInformation 
End Sub 

回答

0

這是一個壞主意,使用VBA命令的名稱作爲變量名,所以我的第一個建議是你的變量Shell更改爲類似ScriptToRun - 所以

Dim ScriptToRun As String 
ScriptToRun = Worksheets("Input").Range("A4").Value 

然後按照正確的方法嵌入您的Shell命令調用中應該是:

Shell "powershell -noexit -file """ & ScriptToRun & """", vbMaximizedFocus 

或者只是

Shell "powershell -noexit -file " & ScriptToRun, vbMaximizedFocus 

,如果你不想要的位置與" s內包裹做。 (通常,如果文件/路徑包含任何嵌入的空格,需要雙引號)。


你也有一個錯字在你的代碼(asn -V- ans)。如果您在代碼模塊中使用Option Explicit作爲第一行,則可以避免花費數小時來查找此類事物。那麼每次你使用一個沒有被正確聲明的變量時就會給編譯器一個錯誤,所以會告訴你變量ans沒有被聲明。

聲明所有變量可能會多一點工作,但從長遠來看,它會爲您節省時間。

相關問題