我可以将VBA变量传递给调用的Powershell脚本吗?

时间:2013-06-11 00:32:12

标签: powershell excel-vba vba excel

我有一个Powershell脚本可以合并到Excel VBA宏中。请参考这个问题: Powershell Regex: Replace only multiple spaces with tabs

这是有问题的代码Convert_To_Tab_Delimited.ps1:

gc 'foo.txt'| % { $_ -replace '  +',"`t" } | set-content "<my path>\temp.txt"

我需要让'foo.txt'成为我传递给它的VBA变量。基本上是从VBA中的选择文件对话框中获取的路径字符串。 Powershell文件将由此声明调用:

Shell(“powershell.exe -ExecutionPolicy Unrestricted <pathname>\Convert_To_Tab_Delimited.ps1″, 1)

有没有办法将字符串变量作为参数传递给被调用的Powershell脚本?对此的任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您只需在脚本顶部定义参数:

param([string]$path)
$content = [IO.File]::ReadAllText($path)
# etc.

在VBA中,您需要传递参数:

Shell("powershell.exe -ExecutionPolicy Unrestricted -File <pathname>\Convert_To_Tab_Delimited.ps1 -path """ & pathVariable & """", 1)