ファイルのコピー

ファイルをコピーする。

FileSystemObjectのCopyFileメソッドを利用してファイルをコピーすることができます。

CopyFileには下記の引数が設定できます。

引数名説明省略
第1引数sourceコピー元のファイルパスの指定不可
第2引数destinationコピー先のファイルパスまたはフォルダの指定不可
第3引数overwriteコピーに同名ファイルがある場合の判定
True:上書き(規定値)、False:上書きしない

コピーする時にファイルの名前を変更してコピーさせることも可能です、その場合は第2引数の末尾に”\”を付けない形で指定します。
名前を変更しないでコピーさせる場合は第2引数の末尾に”\”が必要になります。
またワイルドカードを使用して複数のファイルをまとめてコピーさせることもできます。

コピー先に同名ファイルに既に存在する場合、上書きするかどうかを第3引数に True または False を指定することでできます。True が「上書きをする」になります。

 ●同じファイル名のままコピー

'******************************************************************
' ファイルのコピー(同じファイル名のままコピー)
'******************************************************************
Sub Main_CopyFile()
    
    'コピー元のファイルパスの指定
    Dim sFileSrc As String
    sFileSrc = "C:\VBA\FSO\memo.txt"

    'コピー先のフォルダを指定
    Dim sFileDst As String
    sFileDst = "C:\VBA\FSO\移動先\"

    'FileSystemObjectの作成
    Dim oFso As Object
    Set oFso = CreateObject("Scripting.FileSystemObject")
    
    'ファイルのコピー
    Call oFso.CopyFile(sFileSrc, sFileDst)

End Sub

 ファイル名を変更してコピー

Sub Main_CopyFile_ChangeName()

    'コピー元のファイルパスの指定
    Dim sFileSrc As String
    sFileSrc = "C:\VBA\FSO\memo.txt"

    'コピー先のファイルパスを指定(変更後のファイル名を指定)
    Dim sFileDst As String
    sFileDst = "C:\VBA\FSO\移動先\memo_rename.txt"

    'FileSystemObjectの作成
    Dim oFso As Object
    Set oFso = CreateObject("Scripting.FileSystemObject")
    
    'ファイルのコピー
    Call oFso.CopyFile(sFileSrc, sFileDst)

End Sub

 複数のファイルをまとめてコピー

Sub Main_CopyFile_ALL()
    
    'コピー元のファイルパスの指定
    Dim sFileSrc As String
    sFileSrc = "C:\VBA\FSO\memo*.txt"

    'コピー先のファイルパスを指定
    Dim sFileDst As String
    sFileDst = "C:\VBA\FSO\移動先\"

    'FileSystemObjectの作成
    Dim oFso As Object
    Set oFso = CreateObject("Scripting.FileSystemObject")
    
    'ファイルのコピー
    Call oFso.CopyFile(sFileSrc, sFileDst)

End Sub

 同名ファイルがある場合は上書き

Sub Main_CopyFile_Update()
    
    'コピー元のファイルパスの指定
    Dim sFileSrc As String
    sFileSrc = "C:\VBA\FSO\memo.txt"

    'コピー先のフォルダを指定
    Dim sFileDst As String
    sFileDst = "C:\VBA\FSO\移動先\"

    'FileSystemObjectの作成
    Dim oFso As Object
    Set oFso = CreateObject("Scripting.FileSystemObject")
    
    'ファイルのコピー(同名ファイルがある場合は上書く)
    Call oFso.CopyFile(sFileSrc, sFileDst, True)

End Sub