首先,为混淆问题道歉。我希望下面给出更多关于我要问的解释。
在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
答案 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
未声明。
声明所有变量可能需要更多工作,但从长远来看,它可以节省您的时间。