使用环境variables在VBA中打开PowerShell脚本

我想运行一个VBAmacros来运行PowerShell脚本。 我可以通过在-File参数之后放置当前用户configuration文件的完整path来使脚本工作。

但是,我需要脚本为所有用户工作。

我试过$env:USERPROFILE\Desktop\open\file_merge.ps1 ,但没有find目录。 所以,我去了下面,但我得到一个语法错误。 任何人都可以协助

 Dim retval retval = Shell("powershell -ExecutionPolicy UnRestricted -File ""Environ("USERPROFILE")" & "\Desktop\open\file_merge.ps1""", 1) 

$env:USERPROFILE只能在PowerShell中使用,所以你不能在从别的地方开始的命令行中使用它。

你的Shell语句不起作用,因为你的引用被破坏了,VBA(像其他的VB语言一样)不会在string内部展开expression式或variables。 使用string连接来解决此问题:

 retval = Shell("powershell -ExecutionPolicy Unrestricted -File """ & _ Environ("USERPROFILE") & "\Desktop\open\file_merge.ps1""", 1) 

不幸的是,它看起来不像你可以直接使用环境variables:

 retval = Shell("powershell -ExecutionPolicy Unrestricted -File ""%USERPROFILE%\Desktop\open\file_merge.ps1""", 1) 

但是如果你在cmd /c了命令行,

 retval = Shell("cmd /c powershell -ExecutionPolicy Unrestricted -File ""%USERPROFILE%\Desktop\open\file_merge.ps1""", 1) 

不是那里的最后一个,但是

 ""Environ("USERPROFILE")" & 

似乎缺less一些&符号,如果你想通过environ USERPROFILE到Powershell