VBAで
・ファイルをコピー
できます!
ここでは私が
・より便利な方法
を記載します!
※実現方法は複数あります。
※より便利な方法を知っておけばよいです。
※「FileSystemObject」を使用した方法です。
ファイル名を変更せずにコピー
「FileSystemObject」の「CopyFile」メソッドの
・引数「Source」 : コピーするファイルのパス
・引数「Destination」 : コピー先のフォルダのパス
・引数「OverWriteFiles」 : コピー先に既にファイルが存在する場合の挙動
※上書き(True) or エラー(False)。
を指定することで、ファイル名を変更せずにコピーできます。
Option Explicit
Sub sample()
Dim fso As Object
Dim fileFullPath As String
Dim folderPath As String
'コピーするファイルのパスを指定
fileFullPath = "C:\Users\user\Desktop\aiueo.txt"
'コピー先のフォルダのパスを指定
folderPath = "C:\Users\user\Desktop\folder_001\"
Set fso = CreateObject("Scripting.FileSystemObject")
'ファイルを変更せずにコピーする
Call fso.CopyFile(Source:=fileFullPath, _
Destination:=folderPath, _
OverWriteFiles:=False)
'後片付け
Set fso = Nothing
End Sub
ファイル名を変更してコピー
「FileSystemObject」の「CopyFile」メソッドの
・引数「Source」 : コピーするファイルのパス
・引数「Destination」 : コピー先のファイルのパス
・引数「OverWriteFiles」 : コピー先に既にファイルが存在する場合の挙動
※上書き(True) or エラー(False)。
を指定することで、ファイル名を変更してコピーできます。
Option Explicit
Sub sample()
Dim fso As Object
Dim fileFullPath As String
Dim copyFileFullPath As String
'コピーするファイルのパスを指定
fileFullPath = "C:\Users\user\Desktop\aiueo.txt"
'コピー先のファイルのパスを指定
copyFileFullPath = "C:\Users\user\Desktop\folder_001\copyfile.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
'ファイル名を変更してコピーする
Call fso.CopyFile(Source:=fileFullPath, _
Destination:=copyFileFullPath, _
OverWriteFiles:=False)
'後片付け
Set fso = Nothing
End Sub
複数のファイルをコピー
ワイルドカードを使用することで、複数のファイルを1度にコピーできます。
詳細は以下の記事を参照してください。
備考(引数「OverWriteFiles」について)
●引数「OverWriteFiles」を「省略」または「True」を指定した場合
コピー先に同名ファイルが存在した場合、強制的に上書きされます。
●引数「OverWriteFiles」に「False」を指定した場合
コピー先に同名ファイルが存在した場合、エラー「既に同名のファイルが存在しています」が発生します。
備考(ファイルをコピーする前に実施しておきたいこと)
コピー後のファイルが既に存在している場合、コピーは不要で場合もあると思います。
その場合は、コピー後のファイルの存在有無を確認してからコピーしましょう。
詳細は以下の記事を参照してください。
コピー後のファイルが既に存在している場合、削除してからコピーすべき場合もあると思います。
その場合は、コピー後のファイルを削除してからコピーしましょう。
詳細は以下の記事を参照してください。
備考(FileCopy関数によるファイルのコピー)
FileCopy関数でもシンプルなファイルのコピーはできますが、以下ができません。
参考
上記で紹介した方法の詳細は、公式サイトをご確認ください。
●「FileSystemObject」の「CopyFile」メソッド
●FileCopy関数