调用powershsell脚本时如何使用文件夹变量

时间:2017-09-25 01:33:20

标签: excel vba excel-vba

首先,为混淆问题道歉。我希望下面给出更多关于我要问的解释。

在VBA中,我需要使用一个变量指向一个包含Powershell脚本位置的Excel单元格,因为对于不同的用户可能会有所不同。

当我运行以下代码时,它不会带来任何错误。窗口弹出并消失。我认为这与语法有关 - “”Shell“。当我进入该位置时,它完美地工作。

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

1 个答案:

答案 0 :(得分: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未声明。

声明所有变量可能需要更多工作,但从长远来看,它可以节省您的时间。