VBAのNameでファイル名やフォルダー名を変更する方法をわかりやすく解説

スポンサーリンク
スポンサーリンク

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 ステートメントは、ファイルやフォルダーの名前を変更するために使用する。
  • ファイルの移動も可能(ただし、同じドライブ内のみ)。
  • フォルダー名の変更もできるが、フォルダーの移動はできない。
  • 開いているファイルは変更できないため、事前に閉じる必要がある。
  • エラーハンドリングを活用し、エラーを適切に処理する。