Hallo zusammen,
ich möchte gerne per VBA Dateinamen aus einem Ordner einlesen, formatieren
und danach die Dateien umbenennen.
Die Dateien sind immer gleich aufgebaut:
000-111-222-333;xxyyzz
also erst eine Nummernkombination, dann als Trennzeichen ; und dann ein Namen aus Buchstaben.
Die Nummernkobination kann in der länge variieren.
Das auslesen und formatieren habe ich in VBA bereits einigermaßen hin bekommen, siehe folgender Code.
Jetzt fehlt nur noch das umbenennen der original Dateinamen, es soll alles nach dem ; und das ; gelöscht werden,
das nur die Zahlenkombination stehen bleibt.
Sub DateienAuflisten()
Dim lngZeile As Long
Dim objFileSystem As Object
Dim objVerzeichnis As Object
Dim objDateienliste As Object
Dim objDatei As Object
Set objFileSystem = CreateObject("scripting.FileSystemObject")
'' Pfad setzten
Set objVerzeichnis = objFileSystem.GetFolder("C:\XYZ-Ordner")
Set objDateienliste = objVerzeichnis.Files
lngZeile = 6
For Each objDatei In objDateienliste
If Not objDatei Is Nothing Then
ActiveSheet.Cells(lngZeile, 26) = objDatei.Name
lngZeile = lngZeile + 1
End If
Next objDatei
For spalte = 26 To 26
For zeile = 6 To Cells(Rows.Count, spalte).End(xlUp).Row
If Cells(zeile, spalte).Value > "" Then
Cells(zeile, spalte - 1).FormulaLocal = "=WENNFEHLER(LINKS(Z" & zeile & ";(FINDEN("";"";Z" & zeile & ";1)-1));"""")"
End If
If Cells(zeile, spalte).Value > "" Then
Cells(zeile, spalte - 2).FormulaLocal = "=WENNFEHLER(RECHTS(Z" & zeile & ";LÄNGE(Z" & zeile & ")-(FINDEN("";"";Z" & zeile & ";1))-LÄNGE("";"")+1);"""")"
End If
Next
Next
For spalte = 24 To 24
For zeile = 6 To Cells(Rows.Count, spalte).End(xlUp).Row
If Cells(zeile, spalte).Value > "" Then
Cells(zeile, spalte - 1).FormulaLocal = "=WENNFEHLER(LINKS(X" & zeile & ";(FINDEN(""."";X" & zeile & ";1)-1));"""")"
End If
Next
Next
''Formel als Text von W und Y in Reihe C und D kopieren
Range("C6:C200").Value = Range("W6:W200").Value
Range("D6:D200").Value = Range("Y6:Y200").Value
''Spalten W-Z löschen
Range("W6:Z200").Value = ""
End Sub
Der Code kopiert die Dateinamen in Zelle Z, beginnend ab der 6. Zeile, dann werden die Namen auseinander genommen und in W, X und Y hinterlegt,
und dann in C und D kopiert, anschließend w-Z gelöscht...
Hoffe mir kann da jemand auf die Sprünge helfen.
Gruß
Marcel