【发布时间】:2019-12-12 18:16:21
【问题描述】:
我有一个代码可以让我执行 Windows 脚本文件(PowerShell 脚本文件),并且代码运行良好,没有任何问题。
我想要做的是将一个变量传递给脚本文件中的一行。 示例:
脚本文件中的这一行
convert Image.png -resize 300x300 -density 300 -quality 100 ImageNew.png
该行有Image.png,但我希望这个文件名是可变的,并通过 Excel 单元格将值传递给它。
换句话说,我在单元格中有文件名,我想将 Image.png 更改为单元格中的值。
这是脚本文件:
cd (Join-Path $env:USERPROFILE 'Desktop\Output\')
convert Image.png -resize 300x300 -density 300 -quality 100 ImageNew.png
这是我正在使用的 VBA 代码:
Sub TestMe()
MsgBox ScriptFile
End Sub
Function ScriptFile() As String
Dim wshShell As Object
Dim strCommand As String
strCommand = "Powershell.exe -File ""C:\Users\Future\Desktop\Sample.ps1"""
Set wshShell = CreateObject("WScript.Shell")
wshShell.Run strCommand, 0, True
End Function
知道怎么做吗?
到目前为止我尝试过 在 VBA 代码中,我使用了这一行
strCommand = "Powershell.exe -File ""& {'C:\Users\Future\Desktop\Sample.ps1' 001.png}"""
在脚本文件中,我在顶部使用了这一行
$image=$args[0]
但我还不能让它工作
【问题讨论】:
-
那么,到目前为止,您尝试了什么?到目前为止,您的 PowerShell 代码不接受参数,而且我没有看到任何 VBA 代码。
-
所以,PowerShell脚本不接受参数,VBA代码也不传递参数。
-
我没有使用过 powershell 脚本,但快速搜索发现 how to have parameters in your powershell script。然后您可以通过您的 VBA 代码传递参数
-
另一种方法是使用 VBA 编写 PowerShell 脚本并执行它。
-
你为什么把
-File ""C:\Users\Future\Desktop\Sample.ps1""改成-File ""& {'C:\Users\Future\Desktop\Sample.ps1' 001.png}""?那是无效的语法。使用如下内容:strCommand = "Powershell.exe -File ""C:\Users\Future\Desktop\Sample.ps1"" " & ws.Range("C4").Value其中ws是指向您的工作表的变量,"C4"是该工作表中具有文件名的单元格。
标签: excel vba powershell