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

Forumthread: Dateiendung ändern, Dateinamen variabel

Dateiendung ändern, Dateinamen variabel
14.05.2014 13:32:36
dEllE
Hallo an alle,
zum Thema Umbennen habe ich einiges gefunden was funktioniert, allerdings wird dort immer nur mit statischen Pfad- und Dateiangaben gewerkelt.
Ich möchte eine Datei, die täglich in einem Ordner erstellt und nach Datum und Uhrzeit benannt wird, von .csv in .txt ändern.
(Beispiel-Dateiname: DPD_20140131080508.CSV)
Meine Idee war:
Dim dpdpfad As String
Dim oldnamefile As String
Dim newnamefile As String
dpdpfad = "\\Server01\bw\Versand\01\BACKUP\"
oldnamefile = Dir$(dpdpfad & "DPD" & "*.csv")
newnamefile = Dir$(dpdpfad & "DPD" & "*.txt")
Name oldnamefile As newnamefile
Die funktioniert leider nicht. Wo habe ich da einen Denkfehler?
Des Weiteren möchte ich auch überprüfen, ob die Datei von heute ist. Uhrzeit ist da egal. Da gibt es eine funktion LEFT, bei der ich aber nicht weiss, wie ich erst ab Stelle 4 von links prüfen kann.
Danke für Eure Tips
Gruss dElLE

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateiendung ändern, Dateinamen variabel
14.05.2014 13:46:18
Rudi
Hallo,
Dir() gibt nur den Dateinamen zurück.
newnamefile = Dir$(dpdpfad & "DPD" & "*.txt")
liefert den Namen einer existierenden dpd*.txt oder "".
newnamefile=left(oldnamefile, len(oldnamefile)-3) &"txt"
name dpdpfad & oldnamefile as dpdpfad & newnamefile
Gruß
Rudi

Anzeige
AW: Dateiendung ändern, Dateinamen variabel
14.05.2014 13:51:03
Daniel
Hi
ein Denkfehler ist beispielsweise dass du glaubst, dass die DIR-Funktion den vollständigen Dateinamen ermittet (pfad + Dateiname), tatsächlich bekommst du aber nur den Dateinamen ohne Pfad.
der zweite Denkfehler ist, dass du den neuen Dateinamen ebenfalls mit der DIR-Funktion ermitteln willst, das geht natürlich nicht, weil die neue Datei ja noch gar nicht vorhanden ist und dewswegen die Dir-Funktion den Leerstring als ergebnis liefert.
der dritte Denkfehler könnte sein, dass du eine Datei zwar umbennen kannst, sich aber dadurch die Datei ansich nicht ändert.
Dim dpdpfad As String
Dim oldnamefile As String
Dim newnamefile As String
dpdpfad = "\\Server01\bw\Versand\01\BACKUP\"
oldnamefile = dpdpfad & Dir$(dpdpfad & "DPD" & "*.csv")
newnamefile = =left(oldfilename, Len(oldfilename) - 3) & "txt"
Name oldnamefile As newnamefile
Gruß Daniel

Anzeige
AW: Dateiendung ändern, Dateinamen variabel
14.05.2014 13:58:17
GuentherH
Hi deile,
oldnamefile = Dir$(dpdpfad & "DPD" & "*.csv")
liefert Dir die erste Datei, mit csv als Endung - was du haben willst oder?
newnamefile = Dir$(dpdpfad & "DPD" & "*.txt")
liefert Dir die erste Datei, mit txt als Endung - was du nicht haben willst!!
Du willst vermutlich
newnamefile= left( oldnamefile, len(oldnamefile )-3) & "txt"
Ob das Umbenennen mit dem Befehl name funktioniert bezweifle ich, teste ich aber erstmal nicht.
Desweiteren suchst Du wohl den Befehl
if mid(oldnamefile,5,8) = format(now(),"YYYYMMDD") then
Gruß,
Günther

Anzeige
AW: Dateiendung ändern, Dateinamen variabel
14.05.2014 15:46:02
dEllE
Hi ihr drei,
danke für die tolle Hilfe. Auch die Erklärung von Daniel hat mir sehr viel weitergeholfen.
Funktioniert alles tadellos.
Und danke an Guenther für das kleine Extra - ich hatte das mit LEFT, RIGHT und LEN hinbekommen nach ewigem Hin- und Her, aber so ist es natürlich sehr viel kürzer.
Muchas gracias - immer wieder eine Freude in diesem Forum!!!!

Anzeige
Danke für die Rückmeldung o.w.T.
14.05.2014 16:24:40
GuentherH
Danke für die Rückmeldung
;
Anzeige
Anzeige

Infobox / Tutorial

Dateiendung ändern und Dateinamen variabel gestalten in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne deinen Excel VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul: Rechtsklicke auf "VBAProject (deine_datei.xlsx)" und wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Sub DateiendungAendern()
        Dim dpdpfad As String
        Dim oldnamefile As String
        Dim newnamefile As String
    
        dpdpfad = "\\Server01\bw\Versand\01\BACKUP\"
        oldnamefile = Dir$(dpdpfad & "DPD" & "*.csv")
    
        If oldnamefile <> "" Then
            newnamefile = Left(oldnamefile, Len(oldnamefile) - 3) & "txt"
            Name dpdpfad & oldnamefile As dpdpfad & newnamefile
        End If
    End Sub
  4. Führe das Skript aus: Klicke auf Run oder drücke F5, um die Dateiendung von .csv zu .txt zu ändern.

Häufige Fehler und Lösungen

  • Fehler: "Datei kann nicht gefunden werden"

    • Lösung: Stelle sicher, dass der Pfad korrekt ist und dass die Datei tatsächlich existiert.
  • Fehler: "Zugriff verweigert"

    • Lösung: Überprüfe die Berechtigungen für den Ordner, in dem sich die Datei befindet.
  • Wichtig: Die Dir() Funktion gibt nur den Dateinamen zurück. Du musst den vollständigen Pfad für das Umbenennen verwenden.


Alternative Methoden

  • Verwendung von FileSystemObject: Eine alternative Methode ist die Verwendung des FileSystemObject in VBA, um Dateiendungen zu ändern. Hier ein Beispiel:

    Sub DateiendungAendernMitFSO()
        Dim fso As Object
        Set fso = CreateObject("Scripting.FileSystemObject")
    
        Dim dpdpfad As String
        dpdpfad = "\\Server01\bw\Versand\01\BACKUP\"
    
        Dim oldnamefile As String
        oldnamefile = Dir$(dpdpfad & "DPD" & "*.csv")
    
        If oldnamefile <> "" Then
            Dim newnamefile As String
            newnamefile = Left(oldnamefile, Len(oldnamefile) - 3) & "txt"
            fso.MoveFile dpdpfad & oldnamefile, dpdpfad & newnamefile
        End If
    End Sub

Praktische Beispiele

  • Beispiel für Dateinamen mit Datum: Wenn du Dateien mit Datumsangaben umbenennen möchtest, könntest du den Code erweitern, um nur Dateien vom heutigen Datum zu berücksichtigen.

    If Mid(oldnamefile, 5, 8) = Format(Now(), "YYYYMMDD") Then
        ' Umbenennungscode hier
    End If

Tipps für Profis

  • Batch-Verarbeitung: Wenn du mehrere Dateiendungen ändern möchtest, kannst du die Schleife Do While verwenden, um alle entsprechenden Dateien im angegebenen Ordner zu durchlaufen.

  • Überprüfe Dateiendungen: Verwende die Funktion FileLen() um sicherzustellen, dass die Datei nicht leer ist, bevor du die Endung änderst.

  • Automatisierung: Du kannst dieses Skript so anpassen, dass es automatisch zu einem bestimmten Zeitpunkt ausgeführt wird, indem du es mit der Windows Aufgabenplanung kombinierst.


FAQ: Häufige Fragen

1. Wie kann ich die Dateiendung in Excel ändern?
Du kannst die Dateiendung mit VBA-Skripten ändern, wie im Tutorial beschrieben.

2. Funktioniert das auch in Windows 11?
Ja, die beschriebenen Methoden sind mit Windows 11 kompatibel.

3. Was mache ich, wenn ich eine .rar-Datei umbenennen möchte?
Du kannst das gleiche Prinzip wie bei .csv und .txt verwenden, indem du die Dateiendung entsprechend anpasst.

4. Kann ich mehrere Dateiendungen gleichzeitig ändern?
Ja, du kannst eine Schleife im VBA verwenden, um die Endungen mehrerer Dateien in einem Rutsch zu ändern.

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