🔧 基本構文
Name oldpathname As newpathname
oldpathname
:現在のファイル(またはフォルダー)のフルパスnewpathname
:変更後のファイル名または移動先のパス
✅ 例:ファイル名を変更
Name "C:\test\old.txt" As "C:\test\new.txt"
この例では、old.txt
というファイルが new.txt
に名前変更されます。
🔁 ファイルの移動にも使用可能
Name "C:\test\data.txt" As "D:\backup\data.txt"
このように、名前変更と同時に場所も変えることができます。
ただし、ドライブをまたぐ移動は不可です(後述)。
📁 フォルダー名の変更
Name "C:\test\OldFolder" As "C:\test\NewFolder"
このように、フォルダー名も変更可能ですが、以下の注意が必要です。
⚠️ Name ステートメントの制限と注意点
項目 | 内容 |
---|---|
📌 上書き禁止 | newpathname にすでにファイルが存在する場合はエラーになります。 |
❌ ドライブ跨ぎ禁止 | C:\ → D:\ のように、異なるドライブ間の移動はできません。 |
🈲 開いているファイル不可 | 対象ファイルがアプリで開かれているとエラー (Permission denied ) になります。 |
🔐 読み取り専用も注意 | 読み取り専用属性のファイルにも注意が必要(事前に属性変更推奨) |
📁 フォルダーが空でないと失敗 | 中身があるフォルダーのリネームは可能。ただしファイル単位での移動不可 |
✅ ファイルの存在確認を組み合わせる例
If Dir("C:\test\old.txt") <> "" Then
If Dir("C:\test\new.txt") = "" Then
Name "C:\test\old.txt" As "C:\test\new.txt"
Else
MsgBox "すでに 'new.txt' が存在します。"
End If
Else
MsgBox "ファイルが存在しません。"
End If
📁 フォルダーのリネーム例(存在確認込み)
If Dir("C:\test\OldFolder", vbDirectory) <> "" Then
If Dir("C:\test\NewFolder", vbDirectory) = "" Then
Name "C:\test\OldFolder" As "C:\test\NewFolder"
End If
End If
🔄 ドライブ間の移動をしたい場合の代替方法
Name
ではドライブ間移動ができないため、以下のようにFileSystemObject
を使う必要があります:
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile "C:\test\data.txt", "D:\backup\data.txt"
fso.DeleteFile "C:\test\data.txt"
💡 よくある用途と活用例
用途 | 説明 |
---|---|
ログファイルのリネーム | 日付をつけてアーカイブする際など |
一時ファイルの正式名称への変更 | 作業後の保存処理など |
ファイルを整理して移動 | 同じドライブ内の整理に便利 |
フォルダーの名前変更 | プロジェクト名変更など |
例:拡張子だけを変更
Name "C:\test\data.tmp" As "C:\test\data.txt"
🧪 応用例:バッチ的にファイル名を変更
Sub RenameMultipleFiles()
Dim i As Integer
For i = 1 To 5
If Dir("C:\test\file" & i & ".txt") <> "" Then
Name "C:\test\file" & i & ".txt" As "C:\test\document" & i & ".txt"
End If
Next i
End Sub
🧠 Name ステートメントと他の方法の比較
操作手段 | 特徴 | ドライブ跨ぎ | 上書き | 開いてるファイル対応 |
---|---|---|---|---|
Name | 軽量・高速・VBA標準 | ❌不可 | ❌不可 | ❌不可(エラー) |
FileSystemObject.MoveFile | 柔軟・再帰・詳細制御可能 | ✅可能 | ✅可 | ❌(ただしエラーハンドリング可能) |
Shell +move | コマンドレベルでの移動 | ✅可能 | ✅ | △(不安定) |
🧩 エラー回避のベストプラクティス
- Dir関数で存在確認を先に行う
- すでにファイルが存在していないかを確認
- エラートラップ(
On Error Resume Next
)を使って安全性を高める
On Error Resume Next
Name "C:\test\file.txt" As "C:\test\file_old.txt"
If Err.Number <> 0 Then
MsgBox "リネームに失敗:" & Err.Description
End If
On Error GoTo 0
🧾 まとめ
特徴 | 内容 |
---|---|
機能 | ファイル・フォルダの名前変更、同ドライブ内移動 |
長所 | シンプルで速い、参照設定不要 |
短所 | ドライブ跨ぎ不可、上書き不可、ファイルが開かれているとNG |
ベスト用途 | 簡単なリネーム、整理処理、ログ保存など |
注意点 | 存在確認+エラー処理を組み合わせて使うこと |