Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1664to1668
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 umbenennen

Dateien umbenennen
11.01.2019 14:10:27
Malte
Hallo Forum,
ich habe folgendes Problem:
Unser Praktikant hat die ganze Woche über Dateien benannt und mit Datum versehen.
Er sollte die Dateien nach folgendem Muster benennen:
2019-01-11 Beitrag im Excel Forum.pdf
er hat die Dateien jedoch wie folgt benannt:
11.01.2019 Beitrag im Excel Forum.pdf
Da ich schonmal etlichen Dateien einen Präfix mit Hilfe von VBA Code verpasst habe, sollte dieses Problem doch ebenfalls lösbar sein. Ich bin aber leider mit dieser ganzen Verzeichnisgeschichte nicht ganz so gut vertraut und hoffe, dass ihr mir weiter helfen könnt.
Gruß Malte

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

Betreff
Datum
Anwender
Anzeige
AW: dafür gibt es besseres ...
11.01.2019 14:22:45
neopa
Hallo Malte,
... mit dem Shareware-Dateimanager Total Commander (findest Du hier: https://www.ghisler.com/deutsch.htm), kannst Du das Problem in 0,nix klären.
Und das ist nur ein von vielen weiteren unverzichtbaren Diensten, den Dir der TC bietet. Wer ihn einmal genutzt hat, wird ihn nicht mehr missen wollen.
Gruß Werner
.. , - ...
AW: dafür gibt es besseres ...
11.01.2019 14:33:31
Malte
Hallo Werner,
danke für deinen Link. Aber auf den ersten Blick weiß ich noch nicht, wie das funktionieren soll.
Ich denke mir wäre eine Lösung per VBA lieber.
Gruß Malte
AW: dafür gibt es besseres ...
11.01.2019 14:35:37
UweD
Hallo
so?
Sub Dateien_umbenennen()
    Dim Pfad As String, Datei As String, Neuname As String, Ext As String
    Dim Datum As Date, Leer As Integer
    
    Pfad = "x:\temp\test\" 'mit \ am Ende 
    Ext = "*.pdf"
    Datei = Dir(Pfad & Ext)
    Do While Datei <> ""
        Leer = InStr(Datei, " ") 'Leerzeichenposition 
        If Leer > 0 Then
            If IsDate(Left(Datei, Leer - 1)) Then
                Datum = Left(Datei, Leer - 1)
                Neuname = Pfad & Format(Datum, "YYYY-MM-DD") & Mid(Datei, Leer)
                Name Pfad & Datei As Neuname
            End If
        End If
        Datei = Dir 'nächste Datei suchen 
    Loop
End Sub

LG UweD
Anzeige
AW: dafür gibt es besseres ...
11.01.2019 14:43:38
Malte
Ja genau so! Vielen vielen Dank!
Wie kann ich denn die Unterordner mit einbeziehen?
Sorry, das hab ich nicht mit in den Ausgangspost geschrieben!
Gruß Malte
AW: dafür gibt es besseres ...
11.01.2019 16:02:17
UweD
Hallo nochmal
dann wird es was aufwändiger..
Hier das Makro (oberer Teil) plus 3 Subroutionen
Sub Umbenennen()
    'mit Rekursion zum Lesen der Unterordner 
    
    Dim Startpfad As String, Ext As String, Leer As Integer
    Dim Daten As New Collection  'gesammelte Ergebinsse 
    Dim Eintrag, Datum As Date, Anz As Integer
    Dim ii As Long, TempPfad As String, Datei As String, Neuname As String
      
    Startpfad = "X:Temp\Test"
    Ext = ".pdf"
      
    'alle Dateien sammeln 
    Call ListFilesInFolder(Daten, Startpfad, True)
        
    'nichts gefunden 
    If Daten.Count = 0 Then
        MsgBox ("In Ordner " & Startpfad & " Nichts gefunden.")
        Exit Sub
    End If
      
    'Ergebnis filtern, z. B. nur Excel-Dateien zulassen 
    For ii = Daten.Count To 1 Step -1
        If InStr(Dateiendung_von(Daten(ii)), Ext) <> 1 Then
        Daten.Remove ii
        End If
    Next ii

    'Die eigendliche Arbeit folgt hier 
    For Each Eintrag In Daten
                
        TempPfad = Pfadname_von(Eintrag)
        Datei = Dateiname_von(Eintrag)
        Leer = InStr(Datei, " ") 'Leerzeichenposition 
        If Leer > 0 Then
            If IsDate(Left(Datei, Leer - 1)) Then
                Datum = Left(Datei, Leer - 1)
                Neuname = TempPfad & "\" & Format(Datum, "YYYY-MM-DD") & Mid(Datei, Leer)
                If Eintrag <> Neuname Then
                    Name Eintrag As Neuname
                    Anz = Anz + 1
                End If
            End If
        End If
                
                
    Next Eintrag
    
    MsgBox "Fertig: " & Anz & " Dateien umbenannt"

End Sub

Sub ListFilesInFolder(Daten As Collection, SourceFolderName As String, _
                      IncludeSubfolders As Boolean)
    'alle Dateien in SourceFolder auflisten 
    'Beispiel: ListFilesInFolder "C:\FolderName\", True 

    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Dim SourceFolder, SubFolder, FileItem
  
    Set SourceFolder = FSO.GetFolder(SourceFolderName)
    
    For Each FileItem In SourceFolder.Files
        Daten.Add FileItem.Path
    Next FileItem
  
    If IncludeSubfolders Then
        For Each SubFolder In SourceFolder.SubFolders
            ListFilesInFolder Daten, SubFolder.Path, True
        Next SubFolder
    End If
      
    Set FileItem = Nothing
    Set SourceFolder = Nothing
    Set FSO = Nothing
End Sub

Function Pfadname_von(aa) As String
    'Pfadname abtrennen 
    Pfadname_von = Left(aa, InStrRev(aa, "\") - 1)
End Function

Function Dateiname_von(aa) As String
    'Dateiname abtrennen 
    Dateiname_von = Mid(aa, InStrRev(aa, "\") + 1)
End Function

Stammt Großteils von http://www.office-loesung.de/ftopic256109_0_0_asc.php
LG UweD
Anzeige
AW: nun ...
11.01.2019 17:06:58
neopa
Hallo Malte,
... ich war zwischenzeitlich länger offline, so dass ich Dir auf Deine Nachfrage nicht gleich antworten konnte.
Doch beim ersten Einsatz des TC (wie bei jedem neuen Programm), sollte man sich sowieso etwas Zeit nehmen, um sich mit dem Tool "vertraut" zu machen. Diese da investierte Zeit hilft dafür dann künftig, dass mehrfache dessen einzusparen. Dies zumindest dann, wenn man nicht nur selten mit Dateien zu tun hat.
Auf der Hilfeseite des TC wärst auf der 1. Seite gleich auf das Tool "Mehrfach-Umbenn-Tool" gestoßen.
Natürlich kann man beim ersten Einsatz dessen, auch eine Stunde oder 2 brauchen, bis man dessen Möglichkeiten zumindest teilweise erkennt und dann für einen ersten Anwendungsfall wie diesen richtig eingesetzt hat.
Aber der AHA-Effekt danach ...
Gruß Werner
.. , - ...
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige