首先,对于令人困惑的问题表示歉意。我希望以下关于我的要求提供更多解释。
在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
未声明。
可能会有更多的工作来声明您的所有变量,但是从长远来看,它可以节省您的时间。