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



首先,对于令人困惑的问题表示歉意。我希望以下关于我的要求提供更多解释。

在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

使用VBA命令的名称作为变量名是一个坏主意,因此我的第一个建议是将您的变量Shell更改为 ScriptToRun -so

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未声明。

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

最新更新