VBAでフォルダをコピーする方法として、FileSystemObjectのCopyFolderを使用することで実現できます。
FileSystemObjectは、ファイルシステムオブジェクトを操作するための標準ライブラリであり、ファイルやフォルダの作成や削除、コピー、移動などを簡単に行うことができます。
CopyFolderメソッドは、指定されたフォルダを、指定されたフォルダにコピーします。
コピー元のフォルダは、そのまま残ります。
ここでは、FileSystemObjectのCopyFolderを使ってVBAでフォルダをコピーする方法について説明します。
もくじ
【サンプルソース】フォルダのコピー
以下は、FileSystemObjectのCopyFolderを使用してVBAでフォルダをコピーするサンプルコードです。
Sub CopyFolder()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
' コピー元フォルダのパス
Dim sourcePath As String
sourcePath = "D:\200_work\100_sample\AAA"
' コピー先フォルダのパス
Dim targetPath As String
targetPath = "D:\200_work\100_sample\BBB"
' フォルダをコピーする
fso.CopyFolder sourcePath, targetPath
' オブジェクトを解放する
Set fso = Nothing
MsgBox "END"
End Sub
上記のサンプルコードでは、まずFileSystemObjectを生成し、コピー元フォルダのパスを指定します。
次に、コピー先フォルダのパスを指定します。
CopyFolderメソッドを使用して、コピー元フォルダをコピーして、コピー先フォルダにフォルダを作成します。
CopyFolderメソッドに指定する引数は、以下の2つです。
1つ目の引数は、コピー元フォルダパスです。
2つ目の引数は、コピー先フォルダパスです。
注意点としては、コピー先フォルダが既に存在しているか・存在していないかで動きが変わります。
コピー先フォルダが既に存在している場合、コピー元フォルダの中身がコピー先フォルダにコピーされます。
具体的には、BBBフォルダが既に存在している場合、AAAフォルダの中身がBBBフォルダにコピーされます。
コピー先フォルダが存在していない場合、コピー元フォルダはコピー先フォルダ名で作成され、コピー元フォルダの中身もコピーされます。
具体的には、BBBフォルダが存在していない場合、AAAフォルダはBBBフォルダとして作成され、AAAフォルダの中身もコピーされBBBフォルダに中身もコピーされます。
【サンプルソース】フォルダのコピー(コピー先フォルダ配下にコピー)
以下は、FileSystemObjectのCopyFolderを使用してVBAでフォルダをコピーするサンプルコードです。
Sub CopyFolder()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
' コピー元のパス
Dim sourcePath As String
sourcePath = "D:\200_work\100_sample\AAA"
' コピー先のパス
Dim targetPath As String
targetPath = "D:\200_work\100_sample\BBB\"
' フォルダをコピーする
fso.CopyFolder sourcePath, targetPath
' オブジェクトを解放する
Set fso = Nothing
MsgBox "END"
End Sub
上記のサンプルコードでは、コピー先フォルダパスの最後が”\”になっています。
この場合、コピー元フォルダはコピー先フォルダの配下にコピーされます。
具体的には、AAAフォルダはBBBフォルダの配下にコピーされます。
つまり、D:\200_work\100_sample\BBBの配下にAAAフォルダはコピーされ、
D:\200_work\100_sample\BBB\AAAとなります。
もちろん、AAAフォルダの中身もコピーされます。
まとめ
VBAでフォルダをコピーする方法として、FileSystemObjectのCopyFolderを使用する方法を紹介しました。
コピー先フォルダパスの末尾に\をつけた場合とつけなかった場合でコピーの動きが変わりますので、注意しましょう。
以上です。
最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。

