1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Dateinamen auf Aufbau überprüfen und falls nötig korrigieren

Dieses Thema im Forum "Visual Basic 6.0, VBA & VBScript" wurde erstellt von intermde, 5. September 2017.

  1. intermde

    intermde Grünschnabel

    Hallo,

    ich habe eine Access Datei über welche per VBA
    Ordner Dateien auf Ihren Namen prüfen lasen möchte und falls gewisse Kriterien erfüllt sind erweitern/anpassen.

    Die Dateien können entweder den Aufbau haben
    1. xxxxxxxx_xxxxxxx_wgewgg_ewgewgw_gwgw_gwg (x sind Zahlen), 8 Zahlen _ 7 Zahlen _Wörer getrennt jeweils mit einem "_" (Unterstrich)
    2. xxxxxxxx_xxxxxxx_CUPS-Error_hgerhrh_herhr_herhe_heh

    woebei CUPS-Error unterschiedlich geschrieben sein kann
    CUPS-Error, CUPS_Error, CUPS-error, CUPS_error, cups-error,c ups_error ect..

    nun möchte ich folgendes Prüfen bzw. anpassen

    Falls die Datei das Wort ....CUPS... enthält ersetze alles zwischen dem 2. "_" und 3. "_" (Unterschrich) mit dem Wort CUPS-Error
    Aus
    xxxxxxxx_xxxxxxx_CUPS_Eror_hgerhrh_herhr_herhe_heh wird
    xxxxxxxx_xxxxxxx_CUPS-Error_hgerhrh_herhr_herhe_heh

    Sollte das Wort CUPS nicht enthalten sein schreibe anstatt dem 2. "_" (Unterschrich) das Wort "_CUPS-Errror_".
    Aus
    xxxxxxxx_xxxxxxx_wgewgg_ewgewgw_gwgw_gwg wird
    xxxxxxxx_xxxxxxx_CUPS-Error_wgewgg_ewgewgw_gwgw_gwg

    Vielleicht kann mir hier jemand wegen meinen Problem helfen.
     
  2. Yaslaw

    Yaslaw n/a Moderator

    Reguläre Ausdrücke sind die einfachste Lösung: https://msdn.microsoft.com/en-us/library/1400241x(v=vs.84).aspx

    Ich habe mal ein Pattern zusammengestellt. Hier geht's zur Spielwiese: https://regex101.com/r/qF955A/1

    Und das Ganze angewandt:
    Code (Visual Basic):
    1. Public Function correctFileName(ByVal iFileName As String) As String
    2.     'Pattern und Replace String definieren
    3.    Const C_PATTERN = "^(\d{8}_\d{7}_)(?:CUPS[^_]+_)?(\S+)$"
    4.     Const C_REPLACE = "$1CUPS-ERROR_$2"
    5.  
    6.     'RegExp Objekt anlegen
    7.    Dim rx As Object
    8.     Set rx = CreateObject("VBScript.RegExp")
    9.     rx.pattern = C_PATTERN
    10.  
    11.     'Dateinamen übernhemen
    12.    correctFileName = iFileName
    13.  
    14.     'Prüfen ob der Dateiname dem Pattern entspricht und ggf den Namen parsen
    15.    If rx.Test(correctFileName) Then correctFileName = rx.replace(correctFileName, C_REPLACE)
    16. End Function
    Test im Direktfenster:
    Code (Text):
    1. ?correctFileName("12345678_1234567_wgewgg_ewgewgw_gwgw_gwg")
    2. 12345678_1234567_CUPS-ERROR_wgewgg_ewgewgw_gwgw_gwg
    3.  
    4. ?correctFileName("12345678_1234567_CUPS-Err_hgerhrh_herhr_herhe_heh")
    5. 12345678_1234567_CUPS-ERROR_hgerhrh_herhr_herhe_heh
     
Die Seite wird geladen...