ExcelVBAでエクスプローラ風のファイルコピー

例にアニメーション付きでコピーする

'C:\CopySource以下にあるファイルをすべてC:\CopyTarget\以下にコピーする。
'コピーに時間がかかる場合はコピー中のダイアログが自動的に表示される。

'このサンプルを動作させるにはフォーム上にコマンドボタンを1つ貼り付けること。

Private Declare Function SHFileOperation Lib "shell32" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

Private Type SHFILEOPSTRUCT
    hwnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As String
End Type

Private Const FO_COPY = &H2
Private Const FO_DELETE = &H3
Private Const FO_MOVE = &H1
Private Const FO_RENAME = &H4

Private Sub Command1_Click()

    Dim Ret As Long
    Dim sf As SHFILEOPSTRUCT

    sf.hwnd = Me.hwnd
    sf.wFunc = FO_COPY
    sf.pFrom = "C:\CopySource\*"
    sf.pTo = "C:\CopyTarget"

    Ret = SHFileOperation(sf)

    If Ret <> 0 Then MsgBox "失敗しました。"

End Sub