Laufzeitfehler ‚58‘
Wie der Fehlername andeutet, tritt dieser Fehler auf, wenn auf eine bestimmte Datei verwiesen wird und der Dateiname bereits im selben Pfad oder Ordner vorhanden ist. In diesem Artikel behandeln wir die möglichen Gründe für das Auftreten dieses Fehlers und wie der Fehler behoben werden kann.
Dies sind die möglichen Ursachen des Fehlers:
- Der Dateiname, den Sie in der Name-Anweisung angegeben haben, ist identisch mit einem bereits vorhandenen Dateinamen.
Was verursacht den Fehler?
Bevor Sie mit der Behebung des Fehlers fortfahren, müssen Sie die Fehlerursache in Ihrem VBA-Code identifizieren. Die Codezeile, die den Fehler verursacht, wird gelb hervorgehoben, sobald die Debug-Schaltfläche gedrückt wird.
Ursache 1: Der angegebene Name in der Name-Anweisung existiert bereits
In diesem Beispiel versuchen wir, die Datei „Code.xlsx“ mithilfe der Name-Anweisung in „Country Code.xlsx“ umzubenennen.
Option Explicit
Sub FileExist_Example1()
Dim altDateiname, nueDateiname As String
altDateiname = "C:\\Users\\darlene\\Documents\\Code.xlsx"
nueDateiname = "C:\\Users\\darlene\\Documents\\Country Code.xlsx"
Name altDateiname As nueDateiname
End Sub
Es tritt kein Fehler auf, wenn keine .xlsx-Datei mit dem Dateinamen „Country Code“ im Ordner „Documents“ vorhanden ist. Wenn es jedoch vorhanden ist, wird dieser Fehler auftreten.
Um diesen Fehler zu vermeiden, überprüfen Sie am besten immer, ob die Datei bereits im angegebenen Pfad oder Ordner vorhanden ist.
Wir haben drei Musterlösungen.
Lösung 1:
Um den Fehler zu beheben, müssen Sie in der Name-Anweisung einen neuen Dateinamen angeben. Durch Verketten einer eindeutigen Zeichenfolge mit dem neuen Dateinamen.
Im folgenden Beispielcode ist die verkettete Zeichenfolge der Zeitstempel, wenn der neue Dateiname generiert wird.
Option Explicit
Sub FileExist_ExampleS1()
Dim altDateiname, nueDateiname As String
Dim i As Date
i = Now
altDateiname = "C:\\Users\\darlene\\Documents\\Code.xlsx"
nueDateiname = "C:\\Users\\darlene\\Documents\\" & Format(i, "DD.MM.YYYY hhmmss") & " Country Code.xlsx "
Name altDateiname As nueDateiname
End Sub
Lösung 2:
Um die Mühe zu vermeiden, manuell zu prüfen, ob die Datei vorhanden ist, ist es immer am besten, einen Code hinzuzufügen, der prüft, ob die Datei bereits im angegebenen Pfad oder Ordner vorhanden ist. Anstatt eine Fehlermeldung zu erhalten, werden Sie über den im Ordner vorhandenen Dateinamen informiert.
Option Explicit
Sub FileExist_Example1()
Dim altDateiname, nueDateiname As String
Dim strFileExists As String
altDateiname = "C:\\Users\\darlene\\Documents\\Code.xlsx"
nueDateiname = "C:\\Users\\darlene\\Documents\\Country Code.xlsx"
strFileExists = Dir(nueDateiname)
If strFileExists = "" Then
Name altDateiname As nueDateiname
Else
MsgBox "The file already exist."
End If
End Sub
Lösung 3:
Eine andere Lösung besteht darin, die alte Datei zu löschen, bevor Sie sie in einer Name-Anweisung angeben.
Option Explicit
Sub FileExist_Example1()
Dim altDateiname, nueDateiname As String
Dim strFileExists As String
altDateiname = "C:\\Users\\darlene\\Documents\\Code.xlsx"
nueDateiname = "C:\\Users\\darlene\\Documents\\Country Code.xlsx"
\'Checks if the file is already existing.
strFileExists = Dir(nueDateiname)
If strFileExists <> "" Then
Kill nueDateiname
End If
Name altDateiname As nueDateiname
End Sub
Benötigen Sie einen VBA Programmierer?
Wir als exact construct programmieren mit einem Team von rd. 20 Mitarbeitern seit über 10 Jahren Excel-Tools. Wir sind ein Nischenanbieter der spezialisiert auf Makros/VBA-Codes ist. Daneben unterstützen wir auch als 3rd Level Support die IT-Abteilungen rund um Probleme bei MS Office (Excel, Word, PowerPoint, etc.).
Haben Sie ein Excel-Problem? Benötigen Sie einen Makro-Programmierer? Rufen Sie uns unverbindlich an +41 52 511 05 25 oder kontaktieren Sie uns via Kontaktformular.