Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1956to1960
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dateien in Ordner umbenennen

Dateien in Ordner umbenennen
03.12.2023 18:04:26
Heinz
Juten Abend zusammen,
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

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien in Ordner umbenennen
03.12.2023 20:55:41
Piet
Hallo Heinz

wenn ich deinen ersten Code richtig verstehe schreibt du neue Dateien immer ans Tabellenende, mit LastRow+1.
Beim 2. Code kannst du LastRow nicht verwenden, da musst du eine Variable Namens Zeile oder z as Long einfügen.

Dieser Zeile must du VOR For Next einen Wert zuweisen, ab welcher Zelle umbenannt werden soll!
In der Vor Next Zeile zähltst du Zeile + 1 hoch, um den nächsten neuen Dateinamen zu ermitteln.
Hier mal ein Code Vorschlag von mir. Und ein Tipp: benutze für LastRow nicht Range sondern Cells!
Cells(z, s) kannst du als Zahlen angeben, z=Zeile, s=Spalte, oder die Spalte auch als Buchstabe. z.B. "A"
last_raw = sh.Cells(Rows.Count, 1).End(xlUp).Row + 1

mfg Piet

  • Sub Test()
    Zeile = 147 'oder z = 147, kürzere Schreibweise!
    For Each f In fo.Files
    new_name = Cells(z, 1) & "_" & Cells(z, 7) & "_" & Cells(z, 2) & "_" & Cells(z, 5) & ".pdf"
    f.Name = new_name
    z = z + 1 'nächste Zeile
    Next
    End Sub

  • Anzeige
    AW: Freut mich das es jetzt klappt oWt
    05.12.2023 13:03:58
    Piet
    ...
    AW: Dateien in Ordner umbenennen
    03.12.2023 21:30:54
    Piet
    Nachtrag

    wenn du das Sheets("Eingangsr.31201-2023") vor dem auflisten löschst, fängst du das umbenennen immer mit Zeile 2 an.
    Du kannst dir auch VOR dem auflisten die LastRow Zahl in einer Zelle merken, die du beim umbenennen einfach ausliest.

    mfg Piet
    AW: Dateien in Ordner umbenennen
    04.12.2023 19:43:55
    Heinz
    Hi Piet,

    vielen Dank für deine Hilfe,
    damit bin ich ein Stück weitergekommen.
    Aber noch nicht so ganz
    du schreibst:

    Sub Test()
    Zeile = 147 'oder z = 147, kürzere Schreibweise!
    For Each f In fo.Files
    new_name = Cells(z, 1) & "_" & Cells(z, 7) & "_" & Cells(z, 2) & "_" & Cells(z, 5) & ".pdf"
    f.Name = new_name
    z = z + 1 'nächste Zeile
    Next
    End Sub

    Diese Zeile von mir (147) ist ja nur zufällig die letzte Zeile in meiner Tabelle,
    deshalb funktioniert das mit dem Z=147 nicht.
    Der Code muss ja mit dem umbenennen in der ersten hinzugefügten Zeile beginnen, und nicht in der Zeile z
    Ich glaube ich benötige da doch etwas wie row count oder last row
    Hast du vielleicht noch eine Idee?

    Gruß Heinz
    Anzeige
    AW: Dateien in Ordner umbenennen
    05.12.2023 02:03:57
    Piet
    Hallo

    du ermittelst bei deinem Code ja LastRow als Zahl zum Daten einfügen.
    Dann setze direkt dahinter z=LastRow als Anfangszeile zum umbenennen.
    Kommst du damit weiter??

    mfg Piet
    AW: Dateien in Ordner umbenennen
    05.12.2023 12:25:00
    Heinz
    Hej Piet,

    die Idee mit dem Zähler hats gebracht,
    nun funktioniert alles juchhe....

    Vielen Dank nochmal

    Gruß
    Heinz

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige