Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA: Alle Datein in Ordner umbenennen
#11
Hallo JereMaia,

ich hab die Datei mal angefügt. Aber nicht zuviel erwarten.

Ich hab's einfach im VBA-Editor manuell gestartet.
Die ersten Schritt-für-Schritt-Tests (F8) waren einwandfrei, hab's dann mit F4 laufen lassen und bekam irgendwann den Fehler, dass die Datei schon existiert. Da habe ich festgestellt, das mein Makro irgendeinen Scheiß macht.
Hab dann die Debug.Print-Zeile eingefügt und ohne wirkliche Umbenenung laufen lassen. Das ging.
Hab dann den Zähler ergänzt, um zu sehen, ob er alle Dateien bearbeitet.

Aber es scheint wirklich daran zu liegen, dass Dir() schon umbenannte Dateien nochmals anfasst (was für mich völlig unlogisch ist).

Gruß,
Lutz

Hallo zusammen,

ich habe mein Makro jetzt nochmal dahingehend geändert, dass ich über Instr() den ersten "." suche. Wenn der bei 17 ist, handelt es sich um eine nicht geänderte Datei und der Name wird geändert.
Außerdem lasse ich mit meinem Zähler alle geprüften Dateien zählen und mit einem weiteren Zähler alle Änderungen.
Mit der Instr()-Abfrage läuft es bis zum Ende durch.

Ergebnis der Zähler:
  Das Makro ändert alle 526 Dateinamen  Blush.
  Das Makro prüft 875 (!) Dateien Huh .

Das verstehe jetzt jemand.
Sollte Dir() Dateien nach der Umbenennung nochmals anfassen, müssten doch eigentlich 1051 oder 1052 Dateien geprüft werden, oder?

Gruß,
Lutz


Angehängte Dateien
.xlsm   Umbenennen Dateien.xlsm (Größe: 13,7 KB / Downloads: 1)
Antworten Top
#12
Könnte es sein, das das Makro in der Mappe Dein alter Code ist?
Da wird nichts überprüft, ob ein Punkt ab einer bestimmten Stelle vorhanden ist oder nicht.


Code:
Sub Dateien_umbenennen()
Dim Pfad As String
Dim Datei As String
Dim Anzahl As Integer
Pfad = "G:\Produktion\Produktionsreporting\Personal\Test\"
Datei = Dir(Pfad)
Anzahl = 0
Do Until Datei = ""
Anzahl = Anzahl + 1
Debug.Print Anzahl, Datei, "Personalliste " & Mid(Datei, 21, 4) & Mid(Datei, 18, 2) & Mid(Datei, 15, 2) & " erl.xlsx"
   Name Pfad & Datei As Pfad & "Personalliste " & Mid(Datei, 21, 4) & Mid(Datei, 18, 2) & Mid(Datei, 15, 2) & " erl.xlsx"
Datei = Dir()
Loop
End Sub
---           Seid nett und helft einander :100:           ---
---   denn die Liebe ist die größte Kraft im Universum    ---
- Lest die Werke von Jakob Lorber und Gottfried Mayerhofer -
Antworten Top
#13
Uups...


Angehängte Dateien
.xlsm   Umbenennen Dateien.xlsm (Größe: 12,18 KB / Downloads: 1)
Antworten Top
#14
1. Tipp: Die Zeile

Code:
Datei = Dir(Pfad)

würde ich abändern in:

Code:
Datei = Dir(Pfad & "*.xlsx", vbNormal)

Wenn andere Dateien noch in dem Verzeichnis sind als Excel-Dateien, dann werden diese dadruch übergangen. Das würde ich aus Sicherheitsgründen machen.

2. Deine Aussage
"...
Ergebnis der Zähler:
Das Makro ändert alle 526 Dateinamen Blush.
Das Makro prüft 875 (!) Dateien Huh .
..."

kann schon sein, denn Dein Code zählt in der Zahl 875 ALLE Dateien mit. Die die geändert werden und die, die nicht mehr geändert werden müssen. In der Zahl 526 sind NUR die enthalten, die durch den Code geänderten wurden.
---           Seid nett und helft einander :100:           ---
---   denn die Liebe ist die größte Kraft im Universum    ---
- Lest die Werke von Jakob Lorber und Gottfried Mayerhofer -
Antworten Top
#15
Hallo JereMaia,

das Verzeichnis enthält nur die 526 ".xlsx"-Dateien.
Daher habe ich auf weitere Angaben im ersten Dir() verzichtet.

Wenn Dir() jede Datei nur einmal anfasst müsste Anzahl und AnzahlNeu 526 sein, wenn Dir() Dateien nach der Umbenennung nochmals anfasst müsste Anzahl 1051 und Anzahl neu 526 sein. So jedenfalls mein Verständnis.

Ich hab jetzt alle Dateien mit dem geänderten Code umbenannt und die Stichprobenprüfung sah richtig aus. Ich hatte noch einen zweiten Ordner zum Umbenennen, da ist das Makro komischerweise gelaufen wie erwartet (47 Dateien angefasst, 47 Dateien umbenannt).

Aus meiner Sicht ist der Thread erledigt (als gelernt entnehme ich, dass man eine zweite Umbenennung über eine Prüfung geschickt ausschließen muss).

Vielen Dank für Deine Hilfe,
Lutz
Antworten Top
#16
Okay. Super! Xmas21
---           Seid nett und helft einander :100:           ---
---   denn die Liebe ist die größte Kraft im Universum    ---
- Lest die Werke von Jakob Lorber und Gottfried Mayerhofer -
Antworten Top
#17
Noch n Gedicht (via FSO); aufgrund Hinweis von JereMaia -> div. Dateiendungen
Code:
Option Explicit

Sub DateienUmbenennenViaFSO()
    Dim fso As Scripting.FileSystemObject
    Dim fil As Scripting.File
    Dim sPath As String
    '
    Set fso = New Scripting.FileSystemObject
    '
    For Each fil In fso.GetFolder("c:\Test\").Files
        Select Case fso.GetExtensionName(fil)
            Case "xlsx", "xlsm"
                'Rename
                Debug.Print fil
        End Select
    Next fil
End Sub

Methode zum Umbenennen findest sicherlich selbst
gruß
Marco
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste