das Wochen ende neigt sich dem Ende zu und ich habe noch keine Lösung für mein Problem gefunden.
Ich habe das ganze Wochenende gelesen und probiert bin aber nicht weitergekommen. und hoffe das mir jemand helfen kann.
ich habe eine Tabelle mit 8 Spalten, darin sind 2 Buttons, der erste holt mir Dateinamen aus einem angegebene Verzeichnis dessen Pfad in der Zelle P1 steht und schreibt sie in die Spalte E. Ins Spalte A wird eine laufende Nummer hochgezählt. Das funktioniert einwandfrei.
Ich poste mal den Code dazu:
Private Sub Dateinamenholen_Click()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Eingangsr.31201-2023")
Dim fso As New FileSystemObject
Dim fo As Folder
Dim f As File
Set fo = fso.GetFolder(sh.Range("P1").Value)
Dim last_raw As Integer
last_raw = sh.Range("K" & Application.Rows.Count).End(xlUp).Row + 1
For Each f In fo.Files
With sh
.Range("A" & last_raw).Value = .Range("A" & last_raw - 1).Value + 1
.Range("E" & last_raw).Value = f.Name
last_raw = last_raw + 1
End With
Next
End Sub
Wie gesagt das funktioniert gut.
Jetzt trage ich in die Tabelle in jeder Zeile in der ein geholter Dateiname und die laufende Nummer steht noch Werte in 2 weiteren Spalten händisch ein.
Das mache ich in allen Zeilen wo die Dateinamen geholt wurden
Diese 4 Zellen fass ich zu einem neuen Dateinamen zusammen und benenne mit diesem neuen Name die erste Datei aus dem
Verzeichnis wo ich die Dateinamen hergeholt habe (P1)
Auch das funktioniert aber hier beginnt mein Problem.
Die Zeile die mit new_name beginnt ist ja mit absoluten Zellnamen geschrieben, ich brauche aber einen Code der alle Daten in meinem Verzeichnis umbenennt.
Ich komme mit der last_raw Geschichte nicht zurecht. (Müsste ja so ähnlich sein wie bei der ersten Sub, aber ich kriege es nicht hin)
Ich hoffe mir kann jemand helfen,
Private Sub umbenennen_Click()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Eingangsr.31201-2023")
Dim fso As New FileSystemObject
Dim fo As Folder
Dim f As File
Dim new_name As String
Set fo = fso.GetFolder(sh.Range("P1").Value)
For Each f In fo.Files
new_name = Range("A147").Value & "_" & Range("G147").Value & "_" & Range("B147").Value & "_" & Range("E147").Value & ".pdf"
f.Name = new_name
Next
End Sub
Gruß Heinz