【VBA】ワイルドカードを使用して、複数のフォルダをコピーする

この記事では
 ・複数のフォルダをコピーする方法
を記載します!

ワイルドカードを使用できる
 ・FileSystemObjectCopyFolderメソッド
を使用します!

VBAコード

ここでは例として、
 ・フォルダ「work」の全てのフォルダを
 ・フォルダ「test」へ
コピーします。

Option Explicit

Sub sample()
    
    Dim fso As Object
    Dim targetfolders As String
    Dim folder As String
    
    'コピーするフォルダを指定
    targetfolders = "C:\Users\user\Desktop\work\*"
    
    'コピー先のフォルダを指定
    folder = "C:\Users\user\Desktop\test"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    'フォルダをコピー
    fso.CopyFolder targetfolders, folder
    
    '後片付け
    Set fso = Nothing
    
End Sub

コピーするフォルダの指定で「C:\Users\user\Desktop\work\*」というように
「*(アスタリスク)」を使用することで、複数のフォルダをコピー対象にできます。

フォルダの中のファイルもコピーされます。

実行結果

複数のフォルダをコピーできました。

実行結果
実行結果

備考(FileSystemObjectのCopyFolderの第3引数について)

●第3引数を省略(=True)した場合
コピー先に同名フォルダが存在した場合、強制的に上書きされます。

●第3引数にFalseを指定した場合
コピー先に同名フォルダが存在した場合、エラーになります。

'フォルダをコピー
fso.CopyFolder targetfolders, folder, False
エラーメッセージ
エラーメッセージ

フォルダのコピーでエラーとなっているのに、エラーメッセージは「同名のファイルが存在しています」と表示されます。

参考①

上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。

●「FileSystemObject」の「CopyFolder」メソッド

参考②

以下の記事で
 ・複数のファイルをコピーする方法
を紹介しています。