将在VBA中执行的Shell命令的输出管道输出到特定Shell

run*_*ily 3 shell excel vba excel-vba

我对VBA还是非常新的,并且几天前开始学习它.现在我尝试创建一个宏来执行shell命令并将输出传递给特定工作表中的特定单元格.我想要完成的是将目录结构的文本转储到工作表中.下面是我到目前为止的代码.

Sub CopyList()

    Call Shell("cmd.exe /S /K" & "dir /s /b directoryPath", vbNormalFocus)

End Sub
Run Code Online (Sandbox Code Playgroud)

执行此宏会显示命令提示符并将目录结构转储到cmd窗口中.我想知道如何将其传输到工作表.非常感谢您的帮助.

Sam*_*Sam 8

您可以创建WScript.Shell对象并直接读取StdOut:

Sub SO()

Range("A1").Value = CreateObject("WScript.Shell").Exec("CMD /S /C dir /s /b directoryPath").StdOut.ReadAll

End Sub
Run Code Online (Sandbox Code Playgroud)

  • 从未看过这个评论 - 不确定是否仍然需要 - 您可以将输出分配给`Variant`并使用`Split()`函数和`vbCrLf`作为分隔符来创建包含所有结果的数组,然后您可以转置那个数组进入所需的单元格. (2认同)