使用环境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