我正在使用Excel VBA运行一个简单的Powershell脚本,当在Powershell中运行时,它会返回给定目录中某些文件的一个或两个文件名。
我可以从VBA运行这个脚本,但返回值总是一些随机整数。我如何让脚本返回通过PowerShell脚本返回的文件名?
VBA调用脚本:
Dim weekly As String
weekly = Shell("Powershell ""<location of powershell script.ps1>"" ")
脚本:
Get-ChildItem "<directory to search in>" | Where-Object {$_.Name -match "<regex to find file name>"}
如果我错过了任何细节,请询问。
3条答案
按热度按时间rnmwe5a21#
我知道这已经很晚了,但我想让其他任何人都能找到这样做的方法。让你的powershell脚本写一个输出文件:
从那里你可以一行一行地写这个变量:
从那里,您可以将文本插入到单元格中,或者如果愿意,您可以将每一行写入数组,并在需要时单独选择每一行。
9jyewag02#
看起来VBA只是看到了powershell.exe退出的退出代码。试试这个:
我相信这会将您的PowerShell输出重定向到VBA应该能够获取的stdout。
gr8qqesn3#
可以使用WScript访问PowerShell脚本的StdOut输出。请使用以下代码:
我建议在.Exec()调用中使用单引号而不是双引号,因为Windows处理双引号很麻烦。