ファイルのコピーとリネイム
課題・悩み「テンプレートファイルをコピーして大量のファイルを作成する作業が面倒」
解決策「ファイルをコピーし、リネームするプロセスを効率化するVBAマクロ」を解説
本記事では、特定のフォルダからファイルをコピーし、新しい名前で保存する手順を詳しく説明します。
このマクロ入りExcelは、例えばテンプレートファイルから複数ファイルを作成したいときに便利です。
【ファイルをコピーし、リネームするプロセスを効率化するVBAマクロ】を図解で解説しています。
VBAマクロファイルを配布中。
以下のボタンよりダウンロードしてください。
ファイルのコピーとリネイム
特定のファイルをコピーして名前変更して新しいファイルとして保存するマクロ入りExcel
特定のファイルをコピーして名前変更して新しいファイルとして保存するマクロ入りexcelの使い方は以下の通りです。
コピーするファイルのパスの取得
【コピーするファイルのパス】のボタンを押すと、ダイアログが表示されるので、コピーしたいファイルを選択します。
選択したファイルのパスがC2セルに表示されます。
保存するフォルダパスの取得
【保存するフォルダのパス】のボタンを押すと、ダイアログが表示されるので、コピーしたファイルを保存するフォルダを選択します。
選択したフォルダのパスがC3に表示されます。
変更したい名前の入力
C4以下に変更したいファイル名を入力します。
ファイルの複製
【ファイルの複製】のボタンを押すと、C3のファイルがコピーされて、ファイル名がC4以下の文字列に変更されて、保存されます。
特定のファイルをコピーして名前変更して新しいファイルとして保存するVBAマクロのコード
このVBAマクロは、Excelの「Sheet1」に入力された情報を基にファイルをコピーして名前を変更します。
具体的には、セルC2に指定されたファイルをセルC3に指定されたフォルダに、セルC4以降の行に入力された新しい名前で保存します。
元のファイルの拡張子は保持されます。
C列の最後のデータがある行までこの処理を繰り返します。
Sub CopyFilesAndRename()
Dim ws As Worksheet ' ワークシートを格納する変数
Dim lastRow As Long ' C列の最後のデータがある行を格納する変数
Dim srcPath As String ' コピー元ファイルのパスを格納する変数
Dim destFolder As String ' 保存先フォルダのパスを格納する変数
Dim destFileName As String ' 新しいファイル名を格納する変数
Dim destPath As String ' 完全な保存先パスを格納する変数
Dim fileExtension As String ' ファイル拡張子を格納する変数
' ワークシートを設定
Set ws = ThisWorkbook.Sheets("Sheet1")
' ソースファイルのパスをC2から取得
srcPath = ws.Cells(2, "C").Value
' 保存先フォルダのパスをC3から取得
destFolder = ws.Cells(3, "C").Value
' ソースファイルの拡張子を取得
fileExtension = GetFileExtension(srcPath)
' C列の最後のデータがある行を見つける
lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
' C列の4行目から各行をループ処理
Dim i As Long
For i = 4 To lastRow
' 新しい保存先ファイル名を取得
destFileName = ws.Cells(i, "C").Value
' 新しいファイル名が空でないことを確認
If destFileName <> "" Then
' 完全な保存先パスを作成
destPath = CreateDestPath(destFolder, destFileName, fileExtension)
' ファイルをコピー
CopyFileWithHandler srcPath, destPath
End If
Next i
End Sub
Function GetFileExtension(filePath As String) As String
' ファイルパスから拡張子を取得
GetFileExtension = Mid(filePath, InStrRev(filePath, "."))
End Function
Function CreateDestPath(folder As String, fileName As String, extension As String) As String
' フォルダ、ファイル名、拡張子を結合して完全なパスを作成
CreateDestPath = folder & "\" & fileName & extension
End Function
Sub CopyFileWithHandler(src As String, dest As String)
On Error GoTo ErrorHandler
FileCopy src, dest
On Error GoTo 0
Exit Sub
ErrorHandler:
MsgBox "次の場所からファイルをコピー中にエラーが発生しました: " & src & " から " & dest & ": " & Err.Description
On Error GoTo 0
End Sub
注意点
処理に時間がかかる可能性
データが大量にある場合、この処理には時間がかかることがあります。
操作の不可逆性
VBAマクロで実行された操作は元に戻せません。
必ず事前にデータのバックアップを取ってください。
必要な環境設定
ファイルのパスやフォルダのパスが正しく設定されていることを確認してください。
また、Excelのセキュリティ設定でマクロが有効になっていることを確認してください。
処理ごとの解説
ワークシートの設定
「Sheet1」を作業シートとして設定します。
Set ws = ThisWorkbook.Sheets("Sheet1")
ソースパスの取得
コピー元のファイルのパスをセルC2から取得します。
srcPath = ws.Cells(2, "C").Value
保存先フォルダの取得
保存先のフォルダのパスをセルC3から取得します。
destFolder = ws.Cells(3, "C").Value
ファイル拡張子の取得
ソースファイルの拡張子を取得します。
fileExtension = GetFileExtension(srcPath)
最後の行の特定
C列の最後のデータがある行を特定します。
lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
ループ処理の開始
C列の4行目から最後の行までループを開始します。
For i = 4 To lastRow
新しいファイル名の取得
新しいファイル名をC列の各行から取得します。
destFileName = ws.Cells(i, "C").Value
完全な保存先パスの作成
保存先フォルダ、ファイル名、拡張子を結合して保存先のパスを作成します。
destPath = CreateDestPath(destFolder, destFileName, fileExtension)
ファイルのコピー
ファイルを指定された保存先パスにコピーします。
エラーハンドリングを含みます。
CopyFileWithHandler srcPath, destPath
必要な環境設定
マクロの有効化
Excelの「オプション」から「セキュリティセンター」を開き、「マクロの設定」で「すべてのマクロを有効にする」を選択します。
ファイルパスの確認
セルC2にコピー元のファイルの完全なパスを入力します。
セルC3に保存先フォルダのパスを入力します。
セルC4以降に新しいファイル名を入力します(拡張子は不要)。
環境に応じて変更する必要がある箇所の解説
下記の表では、ユーザーの環境に合わせて変更する必要がある箇所について解説します。
各セクションには概要、解説、変更点のコードを示します。
ワークシート名
ワークシートの名前が「Sheet1」でない場合、実際のワークシート名に変更する必要があります。
Set ws = ThisWorkbook.Sheets("YourSheetName")
ソースファイルのパス
コピー元ファイルのパスがセルC2に正しく設定されていることを確認します。
ユーザーは自分の環境に合ったパスを入力する必要があります。
srcPath = ws.Cells(2, "C").Value
保存先フォルダのパス
保存先フォルダのパスがセルC3に正しく設定されていることを確認します。
ユーザーは自分の環境に合ったパスを入力する必要があります。
destFolder = ws.Cells(3, "C").Value
新しいファイル名
新しいファイル名がセルC4以降に正しく入力されていることを確認します。
ユーザーは自分の環境に合ったファイル名を入力する必要があります。
destFileName = ws.Cells(i, "C").Value
まとめ
この記事では、Excel VBAを使用してファイルをコピーし、リネームする方法を解説しました。
このマクロを使うことで、手作業を大幅に省略でき、業務効率が向上します。
適切な環境設定と注意点を確認しながら、ぜひ活用してみてください。
コメント