Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1740to1744
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

File-Directory / Beitrag Nepomuk

File-Directory / Beitrag Nepomuk
14.02.2020 18:05:32
Johanna
Hallo Excel-Spezialisten
Nepomuk schrieb auf eine Anfrage dieses VBA-Programm:
Option Explicit
Public Sub RepairFilenames()
Const FOLDER_PATH As String = "G:\Eigene Dateien\Eigene Musik\" 'Anpassen !!!
Dim strOldName As String, strNewName As String
strOldName = Dir$(FOLDER_PATH & "*.*")
Do Until strOldName = vbNullString
strNewName = LCase$(strOldName)
strNewName = Replace$(strNewName, " ", "_")
strNewName = Replace$(strNewName, "ä", "ae")
strNewName = Replace$(strNewName, "ö", "oe")
strNewName = Replace$(strNewName, "ü", "ue")
strNewName = Replace$(strNewName, "ß", "ss")
Name FOLDER_PATH & strOldName As FOLDER_PATH & strNewName
strOldName = Dir$
Loop
End Sub

Es ändert Dateinamen mit Umlauten.
Nun gibt es aber in meiner Musiksammlung (Heruntergeladene Hits) aus Youtube immer noch seltsame Sonderzeichen.
Das ergibt dann einen Programm-Stop.
Könnte man, bei einem Fehler, den neuen Namen der Datei anzeigen und mit einer Input-Box den richtigen Namen erfassen?
Danke für einen Tipp
Johanna

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

Betreff
Datum
Anwender
Anzeige
AW: File-Directory / Beitrag Nepomuk
14.02.2020 19:18:18
Nepumuk
Hallo Johanna,
welche Programmzeile markiert der Debugger?
Gruß
Nepumuk
AW: File-Directory / Beitrag Nepomuk
15.02.2020 11:10:25
Johanna
Hallo Nepumuk
Das Makro stopt bei:
Name FOLDER_PATH & strOldName As FOLDER_PATH & strNewName
Ich habe mittels der F8 Taste das Makro durchlaufen lassen.
Das Problem ist vermutlich, dass im betreffenden FileName ein "★" steht.
Man müsste also alle Sonderzeichen "herausputzen".
Liebe Grüsse
Johanna
AW: File-Directory / Beitrag Nepomuk
15.02.2020 11:37:49
Nepumuk
Hallo Johanna,
das Makro ersetzt alle Sonderzeichen durch einen _. Ist das ok?
Option Explicit

Public Sub RepairFilenames()
    
    Const FOLDER_PATH As String = "G:\Eigene Dateien\Eigene Musik\" 'Anpassen !!!
    
    Dim strOldName As String, strNewName As String
    Dim objRegEx As Object
    
    Set objRegEx = CreateObject("VBScript.RegExp")
    
    With objRegEx
        .Global = True
        .Pattern = "[^a-z0-9_-]"
        .IgnoreCase = True
    End With
    
    strOldName = Dir$(FOLDER_PATH & "*.*")
    
    Do Until strOldName = vbNullString
        
        strNewName = LCase$(strOldName)
        strNewName = Replace$(strNewName, " ", "_")
        strNewName = Replace$(strNewName, "ä", "ae")
        strNewName = Replace$(strNewName, "ö", "oe")
        strNewName = Replace$(strNewName, "ü", "ue")
        strNewName = Replace$(strNewName, "ß", "ss")
        
        If objRegEx.Test(strNewName) Then _
            strNewName = objRegEx.Replace(strNewName, "_")
        
        Name FOLDER_PATH & strOldName As FOLDER_PATH & strNewName
        
        strOldName = Dir$
        
    Loop
    
    Set objRegEx = Nothing
    
End Sub

Gruß
Nepumuk
Anzeige
AW: File-Directory / Beitrag Nepomuk
15.02.2020 12:58:08
Johanna
Hallo Nepunuk
Das Makro läuft recht gut. Ausser die Zeichen "~?" die das Makro nicht in "_" umwandelt.
Aber, alle meine Endungen ".mp3" verschwinden.
Liebe Grüsse
Markus
AW: File-Directory / Beitrag Nepomuk
15.02.2020 14:31:45
Nepumuk
Hallo ?,
teste mal:
Option Explicit

Public Sub RepairFilenames()
    
    Const FOLDER_PATH As String = "G:\Eigene Dateien\Eigene Musik\" 'Anpassen !!!
    
    Dim strOldName As String, strNewName As String
    Dim strExtension As String
    Dim objRegEx As Object
    
    Set objRegEx = CreateObject("VBScript.RegExp")
    
    With objRegEx
        .Global = True
        .Pattern = "\W"
        .IgnoreCase = True
    End With
    
    strOldName = Dir$(FOLDER_PATH & "*.*")
    
    Do Until strOldName = vbNullString
        
        strNewName = LCase$(strOldName)
        strNewName = Replace$(strNewName, " ", "_")
        strNewName = Replace$(strNewName, "ä", "ae")
        strNewName = Replace$(strNewName, "ö", "oe")
        strNewName = Replace$(strNewName, "ü", "ue")
        strNewName = Replace$(strNewName, "ß", "ss")
        
        strExtension = Mid$(strNewName, InStrRev(strNewName, "."))
        
        strNewName = Left$(strNewName, Len(strNewName) - Len(strExtension))
        
        If objRegEx.Test(strNewName) Then strNewName = objRegEx.Replace(strNewName, "_")
        
        strNewName = strNewName & strExtension
        
        Name FOLDER_PATH & strOldName As FOLDER_PATH & strNewName
        
        strOldName = Dir$
        
    Loop
    
    Set objRegEx = Nothing
    
End Sub

Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige