INDEX
Nameの概要
ファイル・フォルダー名変更 VBAの予約語 | ||
Name 概要 Name ステートメントは、VBAでファイル名やフォルダー名を変更するために使用されます。ファイルの移動も可能です。 わかりやすく説明 Name は、「このファイルの名前をこれに変更して!」と指示するための命令です。フォルダーの名前変更や、フォルダー間のファイル移動もできます。 |
||
|
Nameの基本的な使い方(ファイル名の変更)
特定のファイル名を変更する基本的な例です。
Sub RenameFile()
Dim oldName As String, newName As String
oldName = "C:\Temp\oldfile.txt"
newName = "C:\Temp\newfile.txt"
Name oldName As newName
End Sub
解説:
oldName
に元のファイル名、newName
に新しいファイル名を指定。Name oldName As newName
で、ファイル名を変更。
ExcelでのNameの活用例(CSVファイルのリネーム)
Excelで処理したCSVファイルの名前を変更する例です。
Sub RenameCSV()
Dim folderPath As String, oldFile As String, newFile As String
folderPath = "C:\Temp\"
oldFile = folderPath & "data.csv"
newFile = folderPath & "data_processed.csv"
If Dir(oldFile) <> "" Then
Name oldFile As newFile
MsgBox "ファイル名を変更しました: " & newFile, vbInformation, "完了"
Else
MsgBox "ファイルが見つかりません。", vbExclamation, "エラー"
End If
End Sub
解説:
- 「data.csv」を「data_processed.csv」にリネーム。
Dir(oldFile)
でファイルの存在確認を行い、存在しない場合はエラーを回避。
ファイルを別のフォルダーに移動する
Name でファイルを異なるフォルダーに移動できます。
Sub MoveFile()
Dim oldPath As String, newPath As String
oldPath = "C:\Temp\file.txt"
newPath = "C:\Backup\file.txt"
Name oldPath As newPath
End Sub
解説:
- 「C:\Temp\file.txt」を「C:\Backup\file.txt」に移動。
- ファイルの内容は変更されず、保存場所だけが変わる。
フォルダー名を変更する
フォルダー名を変更することも可能です。
Sub RenameFolder()
Dim oldFolder As String, newFolder As String
oldFolder = "C:\Temp\OldFolder"
newFolder = "C:\Temp\NewFolder"
Name oldFolder As newFolder
End Sub
解説:
- フォルダー名を変更する際も、
Name
を使用できる。 - フォルダーの中身はそのままで、フォルダー名だけが変更される。
エラーを回避する方法
ファイルが開かれている場合や、存在しないファイルをリネームしようとするとエラーになるため、エラーハンドリングを追加しましょう。
Sub SafeRenameFile()
Dim oldFile As String, newFile As String
oldFile = "C:\Temp\file.txt"
newFile = "C:\Temp\renamed_file.txt"
On Error Resume Next
Name oldFile As newFile
If Err.Number <> 0 Then
MsgBox "エラー発生: " & Err.Description, vbExclamation, "エラー"
Err.Clear
Else
MsgBox "ファイル名を変更しました。"
End If
End Sub
解説:
On Error Resume Next
を使い、エラー発生時にプログラムが止まらないようにする。- エラーが発生した場合、メッセージを表示してエラーをクリア。
Nameの注意事項
- ファイルが開かれていると変更できない: 開いているファイルの名前変更や移動はエラーになる。
- 異なるドライブ間での移動は不可:
Name
ではドライブ間の移動はできない(C: → D: など)。 - フォルダーが空でないと移動できない: 中身のあるフォルダーは削除・移動できない。
- 上書き不可: すでに同名のファイルが存在するとエラーになるため、
Dir
で事前確認するとよい。
よくある質問
- Q: Name でファイルを削除できますか?
- A: いいえ。Name はファイルの名前変更や移動のみ可能です。削除には
Kill
を使用します。 - Q: すでに同名のファイルがある場合はどうなりますか?
- A: エラーになります。事前に
Dir
で確認し、存在する場合は削除または別の名前に変更する必要があります。 - Q: Name でフォルダーの移動はできますか?
- A: いいえ。フォルダーの名前変更はできますが、フォルダーの移動はできません。
- Q: 異なるドライブ間での移動は可能ですか?
- A: いいえ。
Name
は同じドライブ内でしか移動できません。異なるドライブに移動するにはFileSystemObject
を使用します。
まとめ
- Name ステートメントは、ファイルやフォルダーの名前を変更するために使用する。
- ファイルの移動も可能(ただし、同じドライブ内のみ)。
- フォルダー名の変更もできるが、フォルダーの移動はできない。
- 開いているファイルは変更できないため、事前に閉じる必要がある。
- エラーハンドリングを活用し、エラーを適切に処理する。