FileSystemObject

フォルダをコピーする【CopyFolderメソッド】【FileSystemObject】【ExcelVBA】

構文

Object.CopyFolderSource, Destination [, overwrite] 

Source・・・・コピーするフォルダパスを指定 コピーするフォルダ名はワイルドカード指定可能。
Destination・・コピー先のパスとフォルダ名を指定
overwrite・・・True→上書きする/False→上書きしない 省略時Trueが初期値
Sourceで指定したフォルダをDestinationに指定したフォルダにコピーします。
overwriteをFalseにしたうえで、同フォルダが存在した場合はエラー発生します。
フォルダの中にあるファイルも当然コピーされます。

CopyFolderメソッドのサンプルコード

Public Sub sample()

    '■FileSystemObjectの宣言
    Dim fso As Object: Set fso = CreateObject("Scripting.FileSystemObject")
    
    '■"C:\vba"を"C:\sample\vba"にコピー※区切り文字でフォルダ名は固定となる
    fso.CopyFolder "C:\vba", "C:\sample\", True
    
    '■"C:\vbaを含むフォルダを"C:\sample\"に移動(フォルダ名はコピー元同様)
    fso.CopyFolder "C:\vba*", "C:\sample"
    
End Sub

注意点

  • パスが存在しなければエラー発生します。FolderExistsで事前確認必要です。
    実行時エラー76「パスが見つかりません。」
  • overwrite=False時、コピー先に同名のフォルダが存在すればエラー発生します。
    FolderExistsで事前確認必要です。
    実行時エラー58「既に同名のファイルが存在しています。」
  • ワイルドカードで指定する場合、フォルダ名はコピー元のままコピーします。

関連記事

コメント

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