Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Sehr viele Dateien umbenennen aus Zelle

Sehr viele Dateien umbenennen aus Zelle
03.06.2024 10:22:58
Patrick Walke
Hallo VBA-ler.
Ich habe ein Problem auf den Tisch bekommen was nach Makro ruft...ich finde aber keine Antwort.
Es existieren >1000 Dateien in einem Verzeichnis d:\beschreibung.
Diese Dateinamen sind recht willkürlich gewählt (viele Anwender, keine Vorgabe). Nun will ich diese sortieren indem ich aus der jeweiligen Datei aus Zelle H1 eine Projektnummer (5-stellig) auslese und damit dann die Datei umbenenne in "Projektnummer_alter-Dateiname.xlsx".
Hier muss ich vermutlich mit einem Makro in einer externen Datei auf das Verzeichnis zugreifen? Hat jemand hier eine Idee wie das klappen kann?

Danke, Patrick
Anzeige

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sehr viele Dateien umbenennen aus Zelle
03.06.2024 12:06:01
Piet
Hallo

mit dieser Datei (leider eine alte Excel 2003 Version) kannst du einen ganzen Ordner auflisten.
Die alten Dateinamen nach rechts kopieren, und sie dort bearbeiten. Dann als neue Datei speichern!

Mit dem Bearbeiten musst du noch mal Erklären, das können wir ggf. als Makro ausführen lassen.
Dazu müsste ich nur genau wissen was genau am Dateinamen geändert werden soll??
https://www.herber.de/bbs/user/169843.xls

mfg Piet
Anzeige
AW: Sehr viele Dateien umbenennen aus Zelle
03.06.2024 12:25:31
Piet
Nachtrag

Sorry, in der 1. Beispieldatei war noch ein Makro Fehler. - Diese ist jetzt auf Projekt umgestellt.
Du brauchst nur neben den alten Dateinamen die passende Projektnummer anzugeben, dann wird sie davorgestellt.
Teste es bitte mal mit 1-2 Testdateien, die du zur Vorsicht kopiert hast. Deinen Pfad musst du natürlich mit angeben!
https://www.herber.de/bbs/user/169844.xls

mfg Piet
Anzeige
AW: Sehr viele Dateien umbenennen aus Zelle
03.06.2024 17:22:00
daniel
HI
mal ein Lösungsansatz.
du musst die umzuwandelnden Dateien zuerst auswählen.
Dabei kannst du alle Dateien in einem Verzeichnis auswählen (Multiselect mit Shift, STRG oder auch STRG+a für alle)
allerdings müssen die Projektnummern immer auf gleichbenannten Tabellenblättern liegen, da du den Tabellenblattnamen im Code festlegen musst.
das Makro ignoriert andere Dateitypen, dh es stört nicht, wenn da mal ein PDF oder so dazwischen ist

Sub Umbenenen()

Dim Dateien
Dim DateiAlt
Dim DateiNeu As String
Dim Datei As String
Dim Ordner As String
Dim PNr As Variant
Dateien = Application.GetOpenFilename(MultiSelect:=True)
If VarType(Dateien) = vbBoolean Then Exit Sub 'abbruch

For Each DateiAlt In Dateien
If DateiAlt Like "*.xls?" Then
Ordner = Left(DateiAlt, InStrRev(DateiAlt, "\"))
Datei = Mid(DateiAlt, InStrRev(DateiAlt, "\") + 1)
PNr = Evaluate("='" & Ordner & "[" & Datei & "]Tabelle1'!H1") 'hier Tabellenblattname anpassen
If Not IsError(PNr) Then 'prüfung, ob Evaluate den Wert ermitteln konnte (wenn nicht, anderer Blattname)
If PNr Like "?????" Then ' Prüfung Projektnummer korrekt (5stellig)
DateiNeu = Ordner & Evaluate("='" & Ordner & "[" & Datei & "]Tabelle1'!H1") & " " & Datei
Name DateiAlt As DateiNeu
End If
End If
End If
Next


End Sub


Gruß Daniel
Anzeige
AW: Sehr viele Dateien umbenennen aus Zelle
04.06.2024 08:34:17
Patrick Walke
Hallo Daniel,

dein Ansatz klingt vielversprechend. Allerdings erhalte ich einen Laufzeitfehler '75' für die Zeile "Name DateiAlt as DateiNeu".
Trotz doppelter Projektnummern in H1 kann das aber doch nicht das Problem sein, oder? Durch die Namensvergabe "Projektnummer + alter Dateinamen" können hier keine doppelten Dateinamen entstehen. Andere Idee?

Gruß,
Patrick
Anzeige
AW: Sehr viele Dateien umbenennen aus Zelle
04.06.2024 09:35:42
daniel
HI
nö, eigentlich sollte das funktionieren.
hast du mal weiter getestet?
sind die erzeugten Dateinamen (DateiNeu) korrekt?
betrifft der Fehler grundsätzlich alle Dateien (Fehler tritt schon beim ersten Schleifenumlauf auf) oder tritt er erst später auf?
funktioniert der Code, wenn du ihn mal in einem "einfachen" Verzeichnis, also auf deiner Festplatte (C:\Test}\... oder so ) ausführst?
könnte es sein, dass eine der Dateien von jemand anderem geöffnet ist und diese daher nicht umbenannt werden kann?

wenn du die alte Datei nochmal testen willst, ändere bitte diese Zeile noch so ab:
DateiNeu = Ordner & PNr & " " & Datei


zum testen im Einzelstep setzte bitte einen Haltepunkt nach dem GetOpenFilename



wenn das NAME das Problem ist, könntest du es auch so probieren:
wobei das vermutlich länger dauert, da jede Datei geöffnet wird und gespeichert wird.
Sub Umbenenen()

Dim Dateien
Dim DateiAlt
Dim DateiNeu As String
Dim Datei As String
Dim Ordner As String
Dim PNr As Variant
Dim wb as workbook
Dateien = Application.GetOpenFilename(MultiSelect:=True)
If VarType(Dateien) = vbBoolean Then Exit Sub 'abbruch

For Each DateiAlt In Dateien
If DateiAlt Like "*.xls?" Then
Ordner = Left(DateiAlt, InStrRev(DateiAlt, "\"))
Datei = Mid(DateiAlt, InStrRev(DateiAlt, "\") + 1)
Set wb = Workbooks.Open DateiAlt
PNr = wb.Sheets("Tabelle1").Range("H1").value
If Not IsError(PNr) Then 'prüfung, ob Evaluate den Wert ermitteln konnte (wenn nicht, anderer Blattname)
If PNr Like "?????" Then ' Prüfung Projektnummer korrekt (5stellig)
DateiNeu = Ordner & PNr & " " & Datei
wb.SaveCopyAs DateiNeu
wb.Close false
kill DateiAlt 'alte datei löschen
else
wb.Close false
End If
else
wb.Close false
End If
End If
Next


End Sub


Gruß Daniel
Anzeige
AW: Sehr viele Dateien umbenennen aus Zelle
04.06.2024 18:24:19
Piet
Hallo

Frage: gibt es nur eine einzige Projekt-Nummer für alle Dateien?? - Dann setzte sie bitte in Zelle H1.
Das ließe sich bei mir ja auch einbauen. Dazu einfach oldname mit ProjektNummer in H1 verbinden.
Den Code dazu findest du unten. ER nimmt den oldname aus der Spalte B, und Projekt Nummer aus H1.
Einfach diesen Codeteil in meiner Beispieldatei ersetzen. Dann sollte es klappen.

mfg Piet

    On Error GoTo Fehler

'Spalte J in neue Datei umbenennen
For z = 3 To Zeilen
newName = Empty: oldName = Empty
oldName = Trim(Cells(z, "B")) 'Spalte "B"
'Projekt Nummer + oldname verbinden
newName = Range("H1") & "_" & oldName
Name sPfad & oldName As sPfad & newName
n = n + 1
End If
Next z
Anzeige
AW: Sehr viele Dateien umbenennen aus Zelle
06.06.2024 14:03:43
Patrick Walke
Hallo Daniel,

jetzt wird es merkwürdig. Ich habe nun mit Einzelschritten deine erste Version durchgeklickt (Test mit nur zwei Dateien): keine Fehlermeldung, aber auch keine der Dateien umbenannt! Ich gehe davon aus, dass die neue Datei im selben Verzeichnis liegen sollte wie die Ursprungsdatei.
Nehme ich deinen zweiten Entwurf (04.06. 09:35) wird direkt die Zeile Set wb = Workbooks.Open DateiAlt rot dargestellt und ein Fehler beim Kompilieren erscheint.
Fehlt da noch was?

Gruß,
Patrick
Anzeige
AW: Sehr viele Dateien umbenennen aus Zelle
06.06.2024 14:32:38
daniel
Rot ist immer ein Syntaxfehler.
wenn VBA-Befehle nicht mehr allein in der Zeile stehen, muss man die Parameter in Klammern setzen.
willst du die Datei nur öffnen, reicht
Workbooks.Open Datei

wenn du die geöffnete Datei dabei noch einer Variablen zuweist, musst du Klammern setzen:
set wb = Workbooks.Open(Datei)

Gruß Daniel
Anzeige
AW: Sehr viele Dateien umbenennen aus Zelle
06.06.2024 14:41:17
Patrick Walke
Hi.
ich sag mal so.... :-)
Herzlichen Dank. Das war der Fehler. Die Klammern fehlten. Jetzt läuft es einwandfrei.

Wünsche einen schönen Resttag!

Gruß,
Patrick

AW: Sehr viele Dateien umbenennen aus Zelle
06.06.2024 15:25:23
Oppawinni
Hm, hätte schon beim Schreiben des Codes, aber auch beim Lesen des Codes auffallen können, aber spätestens beim Debug muss sowas doch auffallen...
Das zu erkennen sollte jedenfalls nicht Tage oder Wochen dauern.
Anzeige
AW: Sehr viele Dateien umbenennen aus Zelle
05.06.2024 08:06:38
Patrick Walke
Hallo Piet, hallo Daniel

herzlichen Dank für die Ansätze!
@Piet: es gibt unterschiedliche Projektnummern in H1. Z.B. für das Jahr 2023 von 23001 bis 23345. Es kann hier auch sein, dass Projektnummern doppelt vorkommen.

@Daniel: ich hab weiter getestet. Zunächst mit dem gesamten Verzeichnis und dann auch nur mit einem kleinen Teil Dateien. Ergebnis identisch. Abbruch direkt zu Beginn.
Frage hierzu: die Zelle H1 (Projektnummer) steht nicht in "Klartext" sondern als Formel (hier formatiere ich die Projektnummer im Formular auf ein gleiches 5-stelliges Format.
Oder muss hier die Projektnummer als "fertige" Zahl enthalten sein?
Alle anderen Dinge kann ich ausschließen, da ich aktuell rein auf meinem Laptop arbeite ohne Zugriff von extern.

Gruß,
Patrick
Anzeige
AW: Sehr viele Dateien umbenennen aus Zelle
05.06.2024 09:44:54
Oppawinni
Ich denke, du solltest dich mal mit Debug-Methoden beschäftigen.
Das einfachste wäre wohl
nach der Erzeugung des neuen Pfades
DateiNeu = Ordner & PNr & " " & Datei
ein
Debug.print DateiNeu, PNr
rein zu setzen
und einen Haltepunkt auf die Folgende Zeile zu setzen (vor dem Code in die graue Spalte klicken, dann ist da so n roter Punkt)
Im Direktfenster siehst du, wenn du das Macro dann ausführst, wie der neue pfad aussehen würde und was PNr liefert und damit wahrscheinlich auch,
was da nicht passt und brichst das Macro dann ab.
Ich vermute, dass du PNr zunächst noch irgendwie "aufhübschen" musst.
Anzeige
AW: Sehr viele Dateien umbenennen aus Zelle
05.06.2024 19:46:14
Piet
Hallo Patrick

was ich als Ratgeber noch nicht verstanden habe ist, wann erscheint denn die Projektnummer in H1??
Du schreibst, das geht über eine Formel. Woher bezieht die ihre Informationen für jede einzelne Datei???

Gibt es vielleicht eine Liste, wo diese Projektnummern drinstehen, die ich auslesen könnte??
Wird die Projektnummer auf Grund des Dateinamens erstellt? - Wenn ja nach welchem System??
Wenn ich das verstanden habe kann man neben jede Datei die richtige Projektnummer einsetzen.
Dazu müsste ich aber zuerst mal euer System verstehen. 23 könnte als Basiszahl in H1 stehen.
Wie muss dann fortlaufend durchnummeriert werden, um auf 23345 zu kommen??

mfg Piet

Anzeige
AW: Sehr viele Dateien umbenennen aus Zelle
05.06.2024 20:10:13
daniel
die von mir verwendeten Methoden lesen das Formelergebnis aus.
hast du mal das zweite Makro von mir probiert mit dem Öffnen und Speichern unter?
hier könnest du beim Einlesen der PNr noch .Text statt .Value verwenden. Das ist der Wert, so wie er in der Zelle erscheint.
ansonsten tu ich mir hier mit einer Ferndiagnose schwer.
Gruß Daniel
Anzeige
AW: Sehr viele Dateien umbenennen aus Zelle
05.06.2024 19:50:43
Piet
Nachtrag

wenn du am PC sitzt, woher weiss die Formel wann sie die nächste Projektnummer ausgeben muss??
Gibst du zum berechnen irgendwas in eine Zelle ein?? Da werde ich noch nicht ganz schlau draus.

mfg Piet
AW: Sehr viele Dateien umbenennen aus Zelle
03.06.2024 12:36:42
Patrick Walke
Hallo Piet,

danke für deine grundsätzlich Super-Idee. ABER... da ich von über >1000 Dateien spreche wollte ich mir die Arbeit ersparen hier nun einzeln die Projektnummer je Datei in eine Tabelle zu tippen, da sie ja bereits in der jeweiligen Datei vorhanden ist (Zelle H1). Ich muss also "nur" diese Zelle auslesen und in den Dateinamen integrieren.
Oder in deiner coolen Lösung gibt es eine Möglichkeit die Zelle H1 auszulesen und z.B. in die Spalte H einzutragen. Dann kann ich wieder mit deiner Lösung weiterarbeiten.

Gruß, Patrick
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige