Vba调用powershell脚本或.bat文件

时间:2016-05-02 20:28:09

标签: vba powershell batch-file

我有一行来调用一个powershell脚本,它可以工作,但PowerShell窗口会在没有工作的情况下关闭。

代码是什么想法?

另外我希望它能够运行.bat文件(我试过Shell(& pathcrnt&" \ GUI-getuserpropertiesV2.10.ps1"& pathcrnt)我得到的相同错误。

Sub CallBatch()

  Dim pathcrnt As String

  pathcrnt = ActiveWorkbook.Path
  Shell ("PowerShell " & pathcrnt & "\GUI-getuserpropertiesV2.10.ps1" & pathcrnt)

End Sub

2 个答案:

答案 0 :(得分:1)

请参阅以下链接,确保您拥有本机的权限。

http://www.tek-tips.com/viewthread.cfm?qid=1585510

我不了解您的设置或安全性,因此如果您遇到错误,请搜索“PS权限”或其他内容。 VBA脚本肯定会有效!

答案 1 :(得分:1)

如果您在.ps1之后插入一个空格,它应该有效:

Sub CallBatch()

  Dim pathcrnt As String

  pathcrnt = ActiveWorkbook.Path
  Shell "PowerShell " & pathcrnt & "\GUI-getuserpropertiesV2.10.ps1 " & pathcrnt

End Sub

想象一下结果字符串;对于pathcrnt C:\Windows,它将是:"PowerShell C:\Windows\GUI-getuserpropertiesV2.10.ps1C:\Windows"

您也可能希望用双引号括起路径元素,以防止空格弄乱您的参数,如下所示:

Shell "PowerShell """ & pathcrnt & "\GUI-getuserpropertiesV2.10.ps1"" """ & pathcrnt & """"

由于双引号也是VBA中的字符串分隔符,因此必须使用另一个双引号来转义它们。