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

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

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

PR

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")
    
    'フォルダをコピー
    Call fso.CopyFolder(targetfolders, folder)
    
    '後片付け
    Set fso = Nothing
    
End Sub

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

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

PR

実行結果

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

実行結果
実行結果
PR

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

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

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

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

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

PR

参考①

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

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

PR

参考②

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

タイトルとURLをコピーしました