VBA中用SHELL调用xcopy等cmd命令,如何等待命令执行完成以及获取命令行输出结果【图文】

2017年9月5日16:35:22VBA中用SHELL调用xcopy等cmd命令,如何等待命令执行完成以及获取命令行输出结果【图文】已关闭评论 10,385 views
微信公众号 【EXCEL880】 QQ群【341401932】
课程咨询 加我微信EXCEL880B 试学网址http://v.excel880.com

大家知道dos的xcopy命令功能强大,令vba的FileCopy语句相形见绌。我想使用shell函数调用xcopy命令,但是该函数只能返回xcopy的任务ID,不能返回xcopy命令的退出码。xcopy命令的退出码如下:

退出码 说明

0 文件复制没有错误。

1 没有找到要复制的文件。

2 用户按 CTRL+C 终止了 xcopy。

4 出现了初始化错误。没有足够的内存或磁盘空间,或命令行上输入了无效的驱动器名称或语法。

5 出现了磁盘写入错误。

这个退出码对于程序的健壮性特别重要,但我不知道如何得到它,请高手赐教。谢谢。

解决方法

sub Sample1()
    Dim WSH, wExec, sCmd As String, Result As String
    Set WSH = CreateObject("WScript.Shell")         ''(1)
              ''(2)
    Set wExec = WSH.Exec("xcopy /?")    ''(3)
    
    Result = wExec.StdOut.ReadAll                   ''(5)
    MsgBox Result
    Set wExec = Nothing
    Set WSH = Nothing
End Sub

表格 定制  数据 合并 处理 分析 VBA 编程 开发 网页