VBA宏运行PowerShell命令

时间:2018-10-23 18:59:31

标签: excel vba excel-vba powershell

我正在尝试创建一个宏,该宏将能够重命名文件夹中所有扩展名为“ .docx”的文件。

PowerShell命令在直接使用时有效,但是在通过VBA代码使用时,则不会执行。

Sub test()
    Dim retval
    Dim pscmd

    pscmd = "PowerShell -ExecutionPolicy Bypass -Command ""Get-ChildItem -Path *.docx -Recurse | Rename-Item -NewName {$_.Name.Substring(0,7) + $_.Extension }"""

    retval = Shell(pscmd, vbNormalFocus)

    Debug.Print pscmd
End Sub

脚本正在执行,没有编译错误,但是文件未重命名。

我需要更改什么?

1 个答案:

答案 0 :(得分:0)

您必须提供文件所在的路径 尝试一下并更改适合您的路径

Sub Test()
Dim retval, pscmd

pscmd = "PowerShell -ExecutionPolicy Bypass -Command ""Get-ChildItem -Path " & ThisWorkbook.Path & "\Files\" & " *.docx -Recurse | Rename-Item -NewName {$_.Name.Substring(0,7) + $_.Extension }"""
retval = Shell(pscmd, vbNormalFocus)

Debug.Print pscmd
End Sub