VBA - Zwischenteil in Dateinamen ändern?
Hi zusammen,
ich muss folgende Dateinamen per Skriptfür rund 1000 Dateien wie folgt ändern:
Von:
3220022-8006-Amager_25_5_citrus-D-00
In:
3220022_8006_P_1
Den letzten Teil also D-00 in P_1 habe ich bereits hinbekommen. Wie ich jetzt aber alles nach dem ersten Zahlenpaar lösche weiß ich nicht.
Mein bisheriges Skript:
Sub Ordner_Auslesen()
'Bibliothek aktivieren
'Variablen dimensionieren
Dim fso As New FileSystemObject
Dim Pfad As String
Dim Ordner As Files
Dim Datei As File
'Pfad auslesen
Pfad = Tabelle1.Range("A1").Value
'Existiert der Ordner?
If fso.FolderExists(Pfad) Then
'Alle Dateien des Ordners einlesen
Set Ordner = fso.GetFolder(Pfad).Files
'Schleife über alle Dateien des Ordners
For Each Datei In Ordner
'Datei ausgeben
'Debug.Print Datei.Name
'Datei umbenennen
If InStr(Datei.Name, "D-00") <> 0 Then
Datei.Name = Replace(Datei.Name, "D-00", "P_1")
End If
Next Datei
Else
MsgBox "Dieser Ordner existiert nicht."
End If
End Sub
Kann mir jemand helfen?
2 Antworten
![](https://images.gutefrage.net/media/user/Oubyi/1652363895285_nmmslarge__0_0_120_120_040779a85bcf89fd282fa9af46f30da0.png?v=1652363895000)
Mal vom "Prinzip" her. Wenn die Ziffernfolge immer 12 Zeichen lang ist, wie hier, wäre es dann nicht einfacher, den Rest abzuschneiden, das _P_1 anzuhängen und den Bindestrich durch einen Unterstrich zu ersetzen?!
Oder Du liest die beiden Ziffernblöcke getrennt aus und setzt sie dann mit Unterstrich und dem Anhängsel neu zusammen!?
![](https://images.gutefrage.net/media/user/svdeschoeni/1483751459957_nmmslarge.jpg?v=1483751462000)
Das habe ich auch schon gedacht, ich bin in VBA aber noch relativ neu und habs nicht hinbekommen.
![](https://images.gutefrage.net/media/user/hannes1806/1460361699407_nmmslarge.jpg?v=1460361699000)
Um das zu beantworten, brauchen wir entweder viel mehr Beispiele oder eine Regel.
Hilft es, wenn du den Dateinamen nach dem 2. Minuszeichen abschneiden kannst? Das ginge so:
Datei_abgeschnitten = Left(Datei.Name, InStr(InStr(Datei.Name, "-") + 1, Datei.Name, "-") - 1)