Excelからrobocopyを使うExcelVBA

Excelからrobocopyを使ってファイルコピーしたい。

できればコマンドプロンプトが表示されない方法で。と依頼されたので、マクロ作成しました。

Function RunRoboCopy(copyFile, targetFile, fileName) As Boolean

    Dim wsh As Object
    Dim cmd As String

    Set wsh = CreateObject("WScript.Shell")
    cmd = "robocopy " & copyFile & " " & targetFile & " " & fileName
    
    RunRoboCopy = wsh.Run("%ComSpec% /c " & cmd, 0, True)
    
    Set wsh = Nothing

End Function


Sub RoboCopytestmacro()
    Dim result As Boolean
    result = RunRoboCopy("C:\workspace\robocopytest\コピー元", "C:\workspace\robocopytest\コピー先", "test.txt")
    Select Case result
        Case True
            MsgBox "成功"
        Case Else
            MsgBox "失敗"
        End Select
End Sub

実行結果

WScript.Runの引数

第一引数:コマンドの文字列。%COMSPEC%はcmd.exeのフルパス。

第二引数:ウインドウスタイル。0はウインドウ表示しない。

第三引数:起動したアプリケーションの終了を待つか。今回は戻り値を取得するため待つ(True)で作成しました。

RunRoboCopyの戻り値

パスの指定ミスなどrobocopyで明らかに失敗になるケースはFalseになりますが、同じファイルをコピーしようとしてもFalseになります。

ExcelVBA逆引き大全 600の極意 Office365/2019/2016/2013/2010対応

新品価格
¥2,860から
(2022/1/29 21:33時点)

Leave a Reply

Your email address will not be published.

CAPTCHA