Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dateinamen auslesen und ändern mit VBA

Dateinamen auslesen und ändern mit VBA
12.10.2005 10:34:41
Simone
Hallo!
Ich weiß einfach nicht wie ich anfangen soll. Ich muss eine Datei auf Knopfdruck umbenennen können und das irgdenwie mit VBA lösen. Die Datei heißt z.B. 051012_test_103248.txt nachdem ausführen des Programms soll sie 12103248.txt heißen. Wie kann ich denn den bestehenden Namen auslesen und den Rest löschen?
Könnt ihr mir helfen?
Herzlichen Dank im Voraus
Gruß
Simone
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateinamen auslesen und ändern mit VBA
12.10.2005 11:04:38
Matthias
Hallo Simone,
hier eine Beispielmappe:
https://www.herber.de/bbs/user/27418.xls
Du musst in Spalte C eine passende Umbenennungsformel finden und eintragen.
Gruß Matthias
AW: Dateinamen auslesen und ändern mit VBA
12.10.2005 11:06:03
Oberschlumpf
Hi Simone
Du schreibst "auf Knopfdruck".
Heißt das, in der Excel-Tabelle ist eine Zelle markiert, in der eben ein Dateiname steht, wie von dir beschrieben, der dann nach deinen Wünschen geändert werden muss?
Oder wann genau soll das Makro ausgeführt werden? Und wie soll dem Makro der Dateiname "bekannt gemacht" werden, der geändert werden soll?
Dann noch diese Frage:
Sind alle Dateinamen, die du ändern musst, nach dem gleichen Prinzip aufgebaut?
Sehen also alle Dateinamen so aus:
123456_test_123456.txt
Also 6 Zahlen, Unterstrich, Text, Unterstrich, 6 Zahlen
Bis dann
Thorsten
Anzeige
AW: Dateinamen auslesen und ändern mit VBA
12.10.2005 11:14:51
Simone
Ich hab mich etwas unverständlich ausgedrückt. Die Datei, dessen Name geändert werden soll liegt immer im gleichen Verzeichnis. Man bekommt die Datei per Email und muss sie in das Verzeichnis abspeichern, damit man aber nicht so viel "Handarbeit" hat soll sie per Makro o.ä. automatisch umbenannt werden.
Die Datei kommt immer im gleichen Format an : 20051012_text_111353.txt
Der Tag(12) und die Uhrzeit(111353) soll als neuer Name gelten. Vielleicht bin ich mit dem Problem auch in diesem Forum falsch?
Danke schonmal für die schnelle Antwort.
Anzeige
AW: Dateinamen auslesen und ändern mit VBA
12.10.2005 11:25:22
Peter
Servus,
wenn du das in Excel lösen möchtest, bist du nicht falsch. Nach dem Muster funzts.


Sub t()
Dim strDatNam As String, strNewName As String, strZW As String
Dim strPath As String
Dim intZähler As Integer
strDatNam = "051012_test_103248.txt"
strPath = ThisWorkbook.Path & "\"
   With Application.FileSearch
    .NewSearch
    .LookIn = strPath
    .SearchSubFolders = False
    .Filename = strDatNam
    .MatchTextExactly = True
    .FileType = msoFileTypeAllFiles
        If .Execute() > 0 Then
            For intZähler = 1 To .FoundFiles.Count
                If .FoundFiles(intZähler) = strPath & strDatNam Then
                    strZW = Right(.FoundFiles(intZähler), Len(strDatNam))
                    strNewName = Mid(strZW, 5, 2) & Mid(strZW, InStr(8, strZW, "_") + 1, 10)
                End If
            Next
        End If
End With
Name strPath & strDatNam As strPath & strNewName
End Sub
Anzeige
AW: Dateinamen auslesen und ändern mit VBA
12.10.2005 11:41:51
Oberschlumpf
Hi Simone
Und hier noch meine Idee:


Sub DateiName()
Mein Code wandelt ALLE gefundenen TXT-Dateien in dem Verzeichnis um in neue Dateinamen.
Es dürfen sich in dem Verzeihcnis also NUR Dateien befinden, dessen Dateiname auch geändert werden soll/darf.
Hinweis:
Vielleicht solltest du erst mal ein paar der TXT-Dateien und den Code in einem extra Verzeichnis speichern und dann erst mal testen.
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: Dateinamen auslesen und ändern mit VBA
12.10.2005 12:14:34
Simone
Hallo Thorsten,
deine Idee hat halb funktioniert. Er gibt einen Fehler aus nach dem "Next" der 2. For Schleife. Laufzeitfehler 5 Ungültiger Prozeduraufruf oder ungültges Argument. Also aus diesem Dateinamen 2005-07-30_Test_203408.txt macht er diesen 7-3003408.txt
Also ist die 7 und das - falsch und eine Zahl (die 2) von der Uhrzeit fehlt.
Aber das ist ja schon mal super! Vielen Dank!!! Dir auch Peter für Deine Hilfe!!!
Gruß
Simone
Anzeige
AW: Dateinamen auslesen und ändern mit VBA
12.10.2005 12:28:50
Oberschlumpf
Hi Simone
Der Fehler kommt daher, weil eben NICHT alle Dateinamen nach dem gleichen Prinzip sind.
Wenn du nur wenige Dateien mit eben einem etwas anderen Dateinamen hast, kannst du die ja per Hand ändern, oder?
Ciao
Thorsten
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dateinamen mit VBA auslesen und ändern


Schritt-für-Schritt-Anleitung

Um die Dateinamen mit VBA auszulesen und zu ändern, kannst Du folgenden Code verwenden. Dieser Code geht davon aus, dass die Dateien in einem bestimmten Verzeichnis liegen und dem gleichen Namensschema folgen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject" > "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:
Sub DateinameAendern()
    Dim strDatNam As String, strNewName As String
    Dim strPath As String
    Dim intZähler As Integer

    strDatNam = "20051012_text_111353.txt" ' Aktueller Dateiname
    strPath = ThisWorkbook.Path & "\"

    ' Neuen Dateinamen erstellen
    strNewName = Mid(strDatNam, 6, 2) & Mid(strDatNam, InStr(1, strDatNam, "_") + 1, 6) & ".txt"

    ' Datei umbenennen
    Name strPath & strDatNam As strPath & strNewName
End Sub
  1. Ändere strDatNam auf den tatsächlichen Namen der Datei, die Du umbenennen möchtest.
  2. Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Laufzeitfehler 5: Ungültiger Prozeduraufruf

    • Dies kann passieren, wenn der Dateiname nicht dem erwarteten Format entspricht. Überprüfe, ob alle Dateinamen im gleichen Muster angelegt sind.
  • Datei nicht gefunden

    • Stelle sicher, dass der Pfad korrekt ist und die Datei existiert. Nutze die ThisWorkbook.Path-Funktion, um den aktuellen Pfad zu ermitteln.

Alternative Methoden

Wenn Du verschiedene Dateinamen ändern möchtest, kannst Du eine Schleife verwenden, um alle Dateien im Verzeichnis zu durchlaufen. Hier ist ein Beispiel:

Sub AlleDateienAendern()
    Dim strPath As String
    Dim strDatei As String

    strPath = ThisWorkbook.Path & "\"
    strDatei = Dir(strPath & "*.txt")

    Do While strDatei <> ""
        ' Hier Logik zum Umbenennen
        strDatei = Dir
    Loop
End Sub

Praktische Beispiele

Hier ist ein Beispiel, das zeigt, wie Du mehrere Dateien umbenennen kannst. Angenommen, die Dateien heißen nach dem Muster 20051012_text_111353.txt.

Sub AlleDateienUmbenennen()
    Dim strPath As String
    Dim strDatei As String
    Dim strNeuerName As String

    strPath = ThisWorkbook.Path & "\"
    strDatei = Dir(strPath & "*.txt")

    Do While strDatei <> ""
        strNeuerName = Mid(strDatei, 6, 2) & Mid(strDatei, InStr(1, strDatei, "_") + 1, 6) & ".txt"
        Name strPath & strDatei As strPath & strNeuerName
        strDatei = Dir
    Loop
End Sub

Tipps für Profis

  • Überprüfe, ob die Dateien im Zielverzeichnis bereits existieren, bevor Du die Umbenennung durchführst, um Kollisionen zu vermeiden.
  • Nutze Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Teste den Code zuerst mit einer Kopie Deiner Dateien, um sicherzustellen, dass alles wie gewünscht funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Dateinamen gleichzeitig umbenennen?
Du kannst eine Schleife verwenden, die durch alle Dateien im Verzeichnis iteriert und jede Datei nach dem gewünschten Muster umbenennt.

2. Was mache ich, wenn der Dateiname nicht dem erwarteten Format entspricht?
In diesem Fall solltest Du eine Fehlerbehandlung in Deinen Code einbauen, um sicherzustellen, dass nur Dateien, die dem Format entsprechen, bearbeitet werden.

3. Ist dieser Code mit jeder Excel-Version kompatibel?
Der Code funktioniert in den meisten modernen Excel-Versionen, einschließlich Excel 2010 bis 2023. Stelle sicher, dass Du die Makros in Excel aktiviert hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige