我正在尝试运行VBA宏来运行PowerShell脚本。我可以通过在-File
参数之后放置当前用户配置文件的完整路径来使脚本工作。
但是,我需要该脚本适用于所有用户。
我试过了$env:USERPROFILE\Desktop\open\file_merge.ps1
,但没找到目录。所以,我去了下面,但我得到一个语法错误。有人可以帮忙吗?
Dim retval
retval = Shell("powershell -ExecutionPolicy UnRestricted -File ""Environ("USERPROFILE")" & "\Desktop\open\file_merge.ps1""", 1)
答案 0 :(得分:3)
$env:USERPROFILE
仅适用于PowerShell,因此您无法在从其他位置启动的命令行中使用它。
您的Shell
语句不起作用,因为您的引用已被破坏,VBA(与其他VB方言一样)不会扩展字符串中的表达式或变量。使用字符串连接解决此问题:
retval = Shell("powershell -ExecutionPolicy Unrestricted -File """ & _
Environ("USERPROFILE") & "\Desktop\open\file_merge.ps1""", 1)
不幸的是,您似乎不能直接使用环境变量:
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)
答案 1 :(得分:-1)
不是那里的最后一次,但
""Environ("USERPROFILE")" &
如果你想将环境USERPROFILE传递给Powershell,似乎缺少一些&符号