VBAでファイルをコピーするには、FileSystemObjectを使用する方法が一般的です。
まずコピー元のデータを用意します。このコードでは「file.txt」のテキストファイルを指定しています。適宜変更してください。
Sub CopyFile()
Dim fso As Object
Dim sourcePath As String
Dim destinationPath As String
' ファイルシステムオブジェクトを作成
Set fso = CreateObject("Scripting.FileSystemObject")
' コピー元のファイルパス
sourcePath = "C:\path\to\your\source\file.txt"
' コピー先のファイルパス
destinationPath = "C:\path\to\your\destination\file.txt"
' ファイルをコピー
fso.CopyFile sourcePath, destinationPath
' オブジェクトの解放
Set fso = Nothing
MsgBox "ファイルのコピーが完了しました"
End Sub
sourcePathとdestinationPathでコピー元とコピー先のファイルパスを指定します。「fso.CopyFile sourcePath, destinationPath」でファイルをコピーします。
このコードではテキストファイルをコピーしていますが、PDFファイルやWordファイルもコピー保存できます。
コピー先のファイル名に日付を追加する
コピー先のファイル名に日付をつける事もできます。こうすることでファイルの管理がやりやすくなります。
Sub CopyFileWithDate()
Dim fso As Object
Dim sourcePath As String
Dim destinationFolder As String
Dim fileName As String
Dim dateSuffix As String
Dim destinationPath As String
Dim fileExtension As String
' ファイルシステムオブジェクトを作成
Set fso = CreateObject("Scripting.FileSystemObject")
' コピー元のファイルパス
sourcePath = "C:\path\to\your\source\file.txt"
' コピー先のフォルダパス
destinationFolder = "C:\path\to\your\destination\"
' 元ファイル名を取得
fileName = fso.GetBaseName(sourcePath)
' 日付をフォーマットして取得
dateSuffix = Format(Now, "yyyymmdd")
' 拡張子を取得
fileExtension = fso.GetExtensionName(sourcePath)
' 新しいファイル名を作成
destinationPath = destinationFolder & fileName & "_" & dateSuffix & "." & fileExtension
' ファイルをコピー
fso.CopyFile sourcePath, destinationPath
' オブジェクトの解放
Set fso = Nothing
MsgBox "ファイルのコピーが完了しました: " & destinationPath
End Sub
GetBaseNameメソッドで元ファイルのベース名(拡張子を除いた部分)を取得します。
GetExtensionNameメソッドで元ファイルの拡張子を取得します。コピー先のファイル名を元ファイル名と日付、拡張子を組み合わせて作成します。
FSOのメソッド
ここで色々とファイル関連のコードで使用するFSOのメソッドを紹介します。
メソッド | 詳細 | 構文 |
---|---|---|
CreateTextFile | 新しいテキストファイルを 作成します。 | FSO.CreateTextFile( filename As String, [overwrite As Boolean], [unicode As Boolean]) |
OpenTextFile | 既存のテキストファイルを 開きます。 | FSO.OpenTextFile( filename As String, [iomode As Integer], [create As Boolean], [format As Integer]) |
GetFile | 指定したパスのファイルを 取得します。 | FSO.GetFile(filespec As String) |
GetFolder | 指定したパスのフォルダを 取得します。 | FSO.GetFolder(folderspec As String) |
GetDrive | 指定したパスのドライブを 取得します。 | FSO.GetDrive(drivespec As String) |
GetSpecialFolder | 特殊フォルダのパスを 取得します。 | FSO.GetSpecialFolder(folderspec As Integer) |
DeleteFile | 指定したファイルを 削除します。 | FSO.DeleteFile(filespec As String, [force As Boolean]) |
DeleteFolder | 指定したフォルダを 削除します。 | FSO.DeleteFolder(folderspec As String, [force As Boolean]) |
CopyFile | 指定したファイルを コピーします。 | FSO.CopyFolder source As String, destination As String, [overwrite As Boolean] |
MoveFile | 指定したファイルを 移動します。 | FSO.MoveFile source As String, destination As String |
MoveFolder | ファイルが存在するか 確認します。 | FSO.MoveFolder source As String, destination As String |
これらのメソッドを使用して、ファイルやフォルダの作成、コピー、移動、削除、存在確認など様々な操作を行うことができます。