更新日:、 作成日:

VBA エラー 58 既に同名のファイルが存在しています。

はじめに

Excel VBA マクロのエラー 58 「既に同名のファイルが存在しています。」の対処法を紹介します。

Name ステートメントや FileSystemObject から、すでに存在するファイル名に変更したときに発生します。

エラーの基本的な対処法は、エラー箇所の特定とその原因となったコードをデバッグします。

デバッグについては「デバッグの仕方」をご覧ください。
エラー処理については「エラー処理をする」をご覧ください。

解決する

Name ステートメントや FileSystemObject を使用してファイル名を変更できます。すでに存在しているファイル名に変更すると発生します。

Name "D:\Before.txt" As "D:\After.txt"

Set f = fso.GetFile("D:\Before.txt") ' FileSystemObject
f.Name = "After.txt"                 ' ファイル名を変更する

上書きしてもいいなら、すでに存在するファイルを削除してから名前を変更すると解決します。

Dir 関数」や「ファイルの存在確認」でファイルが存在するか確認できます。

' Dir 関数
If Dir("C:\After.txt") <> "" Then
    Kill "C:\After.txt" ' 先にファイルを削除する
End If

Name "C:\Before.txt" As "C:\After.txt" ' 名前を変更する
' FileSystemObject
If fso.FileExists("D:\After.txt") Then
    Call fso.DeleteFile("D:\After.txt", True) ' 先にファイルを削除する
End If

Set f = fso.GetFile("D:\Before.txt") 
f.Name = "After.txt"                 ' ファイル名を変更する