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対応 新品価格 |