ich bin auf der Suche nach einem VBA-Code, der mir eine Datei mit variablem Namen sucht. Dabei ist der Präfix des Dateinamen immer gleich, allerdings wird dieser erweitert um eine Zahlen- und Buchstabenfolge.
Ich möchte die Datei (z.B. Test_Daten_125468_hsdjkgb.csv) "Test_Daten_*" suchen und umbenennen in "Test_Daten_TEMP.csv".
Ich habe schon einiges dazu gefunden, unter anderem von Oberschlumpf. Sein Code macht laut Beschreibung genau das, was ich eigentlich suche. Nur kann ich diesen Code nicht anpassen, ohne dass er auf einen Fehler läuft.
Hier der original Code von Oberschlumpf:
Sub FileMove()
Dim lastrDateiName(7) As String, lstrDateiName As String, liSchleife As Integer, lstrInputName _
As String
Dim lstrVerz As String
'Laufwerk- und Verz.wechsel ins gewünschte Verzeichnis
ChDrive ("C:\")
ChDir ("C:\2004")
'hier wird geprüft, ob die 3 Unterverzeichnisse im Verzeichnis vorhanden sind - wenn nicht, _
werden sie erstellt
lstrVerz = Dir("Bestandsprotokoll", vbDirectory)
If lstrVerz = "" Then
MkDir ("Bestandsprotokoll")
End If
lstrVerz = Dir("Entladeprotokolle", vbDirectory)
If lstrVerz = "" Then
MkDir ("Entladeprotokolle")
End If
lstrVerz = Dir("Teilnehmerzählung", vbDirectory)
If lstrVerz = "" Then
MkDir ("Teilnehmerzählung")
End If
'die Namensteile der gesuchten Dateien, die im Dateinamen immer vorkommen, werden einem String- _
Array übergeben
lastrDateiName(0) = "Bestandsprotokoll_*.xls"
lastrDateiName(1) = "BRNR_PTK.txt"
lastrDateiName(2) = "*_ERR.txt"
lastrDateiName(3) = "*_PTK.txt"
lastrDateiName(4) = "*_STA.csv"
lastrDateiName(5) = "Prüfstatistik_*.xls"
lastrDateiName(6) = "Teilnehmerzaehlung_In_Branchen_*.xls"
lastrDateiName(7) = "Teilnehmerzaehlung_In_Buchabschnitten_*.xls"
'hier wird vom User eine Eingabe erwartet, die Bestandteil aller Dateinamen sein wird. Eine _
Leereingabe ist nicht möglich
Do Until lstrInputName ""
lstrInputName = InputBox("Bitte vergeben Sie den gewünschten Namen, der ein Teil aller _
Dateinamen sein soll.", "Namensteileingabe")
If lstrInputName = "" Then
dummy = MsgBox("Geben Sie bitte etwas ein!", vbCritical)
End If
Loop
'in der liSchleife werden alle alten Dateinamen in die Wunschdateinamen umbenannt und in die _
entsprechenden Verzeichnisse verschoben
For liSchleife = 0 To 7
lstrDateiName = Dir(lastrDateiName(liSchleife))
If liSchleife = 4 And lstrDateiName = "" Then
lstrDateiName = Dir("*_STA.xls")
End If
Select Case lastrDateiName(liSchleife)
Case "*_STA.xls"
Name lstrDateiName As "Entladeprotokolle\" & "Eintragsstatistik " & lstrInputName & " Test _
2004.xls"
Case "Bestandsprotokoll_*.xls"
Name lstrDateiName As "Bestandsprotokoll\" & Left(lstrDateiName, 17) & " " & _
lstrInputName & " Test 2004.xls"
Case "BRNR_PTK.txt"
Name lstrDateiName As "Entladeprotokolle\" & "Branchenumschlüsselung " & _
lstrInputName & " Test 2004.txt"
Case "*_ERR.txt"
Name lstrDateiName As "Entladeprotokolle\" & "Fehlerprotokoll " & lstrInputName & " _
Test 2004.txt"
Case "*_PTK.txt"
Name lstrDateiName As "Entladeprotokolle\" & "Entladeprotokoll " & lstrInputName & " _
Test 2004.txt"
Case "*_STA.csv"
Name lstrDateiName As "Entladeprotokolle\" & "Eintragsstatistik " & lstrInputName & _
" Test 2004.txt"
Case "Prüfstatistik_*.xls"
Name lstrDateiName As "Bestandsprotokoll\" & Left(lstrDateiName, 13) & " " & _
lstrInputName & " Test 2004.xls"
Case "Teilnehmerzaehlung_In_Branchen_*.xls"
Name lstrDateiName As "Teilnehmerzählung\" & "Teilnehmerzaehlung in Branchen " & _
lstrInputName & " Test 2004.xls"
Case "Teilnehmerzaehlung_In_Buchabschnitten_*.xls"
Name lstrDateiName As "Teilnehmerzählung\" & "Teilnehmerzaehlung in Buchabschnitten _
" & lstrInputName & " Test 2004.xls"
End Select
Next
End Sub
Ich möchte lediglich nach einer Datei suchen und nicht wie im Code nach 8 verschiedenen und lediglich die Datei umbenennen (ohne Öffnen).Kann mir hier jemand helfen und mir damit den Freitag versüßen?
Vielen Dank vorab und viele Grüße aus Rheinhessen!
Janosch