Excel VBA:如何将此cmd命令转换为VBA外壳代码

Excel VBA:如何将此cmd命令转换为VBA外壳代码,excel,vba,Excel,Vba,我想在VBA代码中使用下面的命令行,该命令用于递归获取所有.pdf和.docx文件,并在CMD中运行良好 dir/s*.pdf*.docx 现在在VBA中,使用下面的命令,递归打印所有文件,而不是指定的扩展名 子运行() Debug.Print shell运行(“cmd.exe/c dir c:\/s*.pdf*.docx”) 端接头 公共函数ShellRun(sCmd作为字符串)作为字符串 将oShell作为对象 设置oShell=CreateObject(“WScript.Shell”)

我想在VBA代码中使用下面的命令行,该命令用于递归获取所有.pdf和.docx文件,并在CMD中运行良好

dir/s*.pdf*.docx
现在在VBA中,使用下面的命令,递归打印所有文件,而不是指定的扩展名

子运行()
Debug.Print shell运行(“cmd.exe/c dir c:\/s*.pdf*.docx”)
端接头
公共函数ShellRun(sCmd作为字符串)作为字符串
将oShell作为对象
设置oShell=CreateObject(“WScript.Shell”)
作为对象的Dim-oExec
作为对象的输出
设置oExec=oShell.Exec(sCmd)
ShellRun=oExec.StdOut.ReadAll
端函数
试试这个

Debug.Print ShellRun("cmd.exe /c dir /s c:\*.pdf c:\*.docx")
编辑:以下评论


您需要运行
dir/s PATH\*.pdf PATH\*.docx
\*
之间没有空格。此外,pdf和docx都应重复
PATH
。但是,代码中有空格,还有
c:\
的位置和
/s
标志被交换。

谢谢,现在一切正常!介意向我简要解释一下这是如何工作的,以便我更好地理解它吗?