フォルダをコピーする。
FileSystemObjectのCopyFolderメソッドを利用してフォルダをコピーさせることができます。
CopyFolderには下記の引数が設定できます。
| 引数名 | 説明 | 省略 | |
| 第1引数 | source | コピー元の指定 | 不可 |
| 第2引数 | destination | コピー先の指定 | 不可 |
| 第3引数 | overwrite | 同名フォルダがある場合の判定 True:上書き(規定値)、False:上書きしない | 可 |
コピーする時にフォルダの名前を変更してコピーさせることも可能です、その場合は第2引数の末尾に”\”を付けない形で指定します。
名前を変更しないでコピーさせる場合は第2引数の末尾に”\”が必要になります。
またワイルドカードを使用して複数のフォルダをまとめてコピーさせることもできます。
コピー先に同名フォルダに既に存在する場合、上書きするかどうかを第3引数に True または False を指定することでできます。True が「上書きをする」になります。
上書きした場合、コピー元とコピー先のフォルダ内にあったファイルはコピー先に統合されます。
●同じフォルダ名でコピー
'******************************************************************
' フォルダのコピー(同じフォルダ名)
'******************************************************************
Sub Main_CopyFolder_SameName()
'コピー元の指定
Dim sFolderSrc As String
sFolderSrc = "C:\VBA\FSO\コピー元"
'コピー先の指定、第2引数の末尾に”\”が必要
Dim sFolderDst As String
sFolderDst = "C:\VBA\FSO\コピー先\"
'FileSystemObjectの作成
Dim oFso As Object
Set oFso = CreateObject("Scripting.FileSystemObject")
'フォルダのコピー
Call oFso.CopyFolder(sFolderSrc, sFolderDst)
End Sub●フォルダ名を変更してコピー
'******************************************************************
' フォルダのコピー(別名に変更してコピー)
'******************************************************************
Sub Main_CopyFolder_ChangeName()
'コピー元の指定
Dim sFolderSrc As String
sFolderSrc = "C:\VBA\FSO\コピー元"
'コピー先(変更後のフォルダ名)の指定、第2引数の末尾に”\”は不要
Dim sFolderDst As String
sFolderDst = "C:\VBA\FSO\フォルダ名変更"
'FileSystemObjectの作成
Dim oFso As Object
Set oFso = CreateObject("Scripting.FileSystemObject")
'フォルダのコピー
Call oFso.CopyFolder(sFolderSrc, sFolderDst)
End Sub●複数のフォルダをまとめてコピー
'******************************************************************
' フォルダのコピー(まとめてコピー)
'******************************************************************
Sub Main_CopyFolder_ALL()
'コピー元の指定(ワイルドカード使用)
Dim sFolderSrc As String
sFolderSrc = "C:\VBA\FSO\コピー元*"
'コピー先の指定
Dim sFolderDst As String
sFolderDst = "C:\VBA\FSO\コピー先\"
'FileSystemObjectの作成
Dim oFso As Object
Set oFso = CreateObject("Scripting.FileSystemObject")
'フォルダのコピー
Call oFso.CopyFolder(sFolderSrc, sFolderDst)
End Sub●同名フォルダがあれば上書きしてコピー
'******************************************************************
' フォルダのコピー(同名フォルダを上書き)
'******************************************************************
Sub Main_CopyFolder_Update()
'コピー元の指定
Dim sFolderSrc As String
sFolderSrc = "C:\VBA\FSO\コピー元"
'コピー先
Dim sFolderDst As String
sFolderDst = "C:\VBA\FSO\フォルダ名変更"
'FileSystemObjectの作成
Dim oFso As Object
Set oFso = CreateObject("Scripting.FileSystemObject")
'フォルダのコピー(同名フォルダがある場合は上書く)
Call oFso.CopyFolder(sFolderSrc, sFolderDst, True)
End Sub

