Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1176to1180
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

Regulärer Ausdruck

Regulärer Ausdruck
Jule
Ich schon wieder.
Vielleicht kann mir ja jemand bei regulären Ausdrücken helfen.
Ich möchte auf Excel Datei Namen einen bestimmten regulären Ausdruck matchen.
Das was dann gematcht wurde soll in einem String gespeichert werden und damit soll eine Excel Datei benannt werden.
Möchte das durch eine Schleife laufen lassen und es dann so haben, dass alle Exceldateien, die den gleichen Wortteil enthalten in einer Excel Datei zusammengefasst werden.
Vielleicht kann mir ja jemand helfen :)
Der reguläre Ausdruck soll sein: "NL_[A-Z]+"

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Regulärer Ausdruck
09.09.2010 13:08:37
EvilRik
Hallo Jule,
Ich möchte auf Excel Datei Namen einen bestimmten regulären Ausdruck matchen

  • wo befinden sich diese Excelnamen? (In einen Arbeitsblatt als Text? Oder möchtest du einen Ordner deiner Festplatte nach diesen ExcelDateiNamen durchsuchen?
  • Das was dann gematcht wurde soll in einem String gespeichert werden und damit soll eine Excel  _
    Datei benannt werden.
    

  • Wenn ich etwas "matche" weiß ich ja was ich "matche"?! Oder suchst du einen Teil-Text und möchtest wenn Teil-Text gefunden wurden den gesamten Text, der Teil-Text enthält ermitteln?
  • Möchte das durch eine Schleife laufen lassen und es dann so haben, dass alle Exceldateien, die  _
    den gleichen Wortteil enthalten in einer Excel Datei zusammengefasst werden.
    

  • Was soll hier wie zusammengefasst werden? Jede Zelle (oder eine bstimmte) in jedem Arbeitsblatt (oder aus einem bestimmten)?

  • Bitte genauer definieren oder Beispiel hochladen.
    Gruß Henrik
    Anzeige
    AW: Regulärer Ausdruck
    09.09.2010 13:28:25
    Jule
    Ist in Access.
    Der reguläre Ausdruck hat aber nix damit zu tun was dadrin steht.
    Dim dbs As DAO.Database
    Dim tdef As DAO.QueryDef
    Dim tdefs As DAO.QueryDefs
    Set dbs = CurrentDb()
    Set tdefs = dbs.QueryDefs
    strLaufwerk = InputBox("Bitte geben Sie einen Laufwerksbuchstaben" & "ein")
    strLaufwerk = Left(strLaufwerk, 1)
    strLaufwerk = UCase(strLaufwerk)
    For Each tdef In tdefs
    If Left(tdef.Name, 2) = "EX" Or Left(tdef.Name, 2) = "Ex" Then
    If tdef.Name Like "*NL_AB*" Then
    DoCmd.OpenQuery tdef.Name
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, tdef.Name, strLaufwerk & ":...\....xls", True, tdef.Name
    DoCmd.Close acQuery, tdef.Name
    End If
    End If
    Next tdef
    MsgBox ("Die Abfragen wurden erfolgreich exportiert!")
    End Sub
    Sind also Abfragen. Eine Abfrage heißt dann ja tdef. Name.
    Das oben ist nicht alles, hab das für jeden unterschiedlichen Namen eben neu durch eine If Schleife gejagt das nervt mich aber.
    Deswegen soll eben dieser reguläre Ausdruck auf tdef.Name gematcht werden.
    Das gematchte also dann z.b. NL_AB soll der neue Name für eine Excel Datei werden.
    Ich würde das dann mit DoCmd.TransferSpreadsheet in eine Exceldatei exportieren mit dem Namen des Matches. So, dass dann alle Abfragen, die dieses Match enthalten in einer Excel Datei landen.
    Wenn ich jetzt machen würde:
    Dim text As String
    text=tdef.Name
    Dim pattern As String = "NL_[A-Z]+"
    Wie matche ist das jetzt und speicher das einfach in einer Variablen als String, sodass ich das in einen Pfadnamen schreiben kann?
    Anzeige
    AW: Regulärer Ausdruck
    09.09.2010 13:53:26
    EvilRik
    Hallo Jule,
    schau mal hier
    https://www.herber.de/forum/archiv/1176to1180/t1176286.htm#1176286
    Auszug:
    
    Sub FindeMich()
    Dim strText As String, strSuchText As String
    Dim Regex As Object, objMatch As Object, zae1 As Integer
    strSuchText = "[A-Z]{2}" ' dein pattern als String
    Set Regex = CreateObject("Vbscript.Regexp")
    With Regex
    .Global = True
    .Pattern = strSuchText
    strText = "Hund'HaRRy' aus 20518HH bellt laut!" ' dein tdef.Name als String
    Set objMatch = .Execute(strText)
    If Not objMatch Is Nothing Then
    For zae1 = objMatch.Count - 1 To 0 Step -1
    MsgBox "Position:" & objMatch(zae1).FirstIndex & Chr(10) & "Text:" & objMatch( _
    zae1).Value
    Next zae1
    End If
    End With
    End Sub
    

    Gruß Henrik
    Anzeige
    AW: Regulärer Ausdruck
    09.09.2010 14:09:17
    Jule
    Hört sich gut an klappt leider nicht :/
    Da kommt, dass irgendeine Funktion nicht funktioniert.
    Was gibt denn jetzt das gematchte zurück?
    objMatch? Das ist ja dann auch kein String, bin verwirrt^^.
    Trotzdem danke.
    AW: Regulärer Ausdruck
    09.09.2010 14:19:16
    EvilRik
    Huhu,
    Sub FindeMich()
    Dim strText As String, strSuchText As String
    Dim Regex As Object, objMatch As Object, DeinErgebnis As String
    strText = "NL_Dsfdjklvngdjklfvndlf.xls" ' dein tdef.Name als String
    strSuchText = "NL_[A-Z]+" ' dein pattern als String
    Set Regex = CreateObject("Vbscript.Regexp")
    With Regex
    .Global = True
    .Pattern = strSuchText
    Set objMatch = .Execute(strText)
    DeinErgebnis = objMatch(0).Value
    End With
    End Sub
    

    Henrik
    Anzeige
    AW: Regulärer Ausdruck
    09.09.2010 14:22:58
    Jule
    Ich finde ja das hört sich alles logisch an wieso bekomme ich dann immer den Fehler mehrdeutiger Name und wo der Fehler genau liegt wird mir nicht mal angezeigt im Assistenten :/
    Ist sicher ein dämlicher Fehler von mir...
    ? :( offen
    09.09.2010 14:45:58
    EvilRik
    Hallo Jule,
    sry,da weiß ich so auch nicht weiter. Setz deine Frage mal als noch offen.
    Henrik
    AW: ? :( offen
    09.09.2010 14:51:43
    Jule
    Also wenn noch jemand eine Idee hat bitte melden !!!
    Brauch dringend Hilfe und das Programm funktioniert bei mir leider nicht.
    AW: ? :( offen
    09.09.2010 15:02:14
    Jule
    Gut vielleicht kann mir ja jemand anders helfen ohne einen regulären Ausdruck?
    Kann man das zum Beispiel mit Like machen?
    Das Problem ist, diese 2 oder 3 Buchstaben nach denen ich eig gerne filtern möchte stehen nicht immer an der gleichen Stelle im Namen nur halt immer nach NL_
    Wäre sehr dankbar !
    Anzeige
    und nochmal :)
    09.09.2010 16:07:45
    EvilRik
    neuer Versuch
    Sub FindeMich()
    Dim strText As String, strSuche As String, strFund As String, Bstb As String
    Dim intNL As Integer, zae1 As Integer
    strText = "ghmNL_hZU_2djklvngdjklfvndlf.accdb"
    intNL = InStr(1, strText, "NL_", vbTextCompare)
    For zae1 = 1 To 3
    Bstb = Mid(strText, intNL + 2 + zae1, 1)
    If Bstb Like "[a-z]" Or Bstb Like "[A-Z]" Then strFund = strFund & Bstb
    Next zae1
    MsgBox "Dein SuchBegriff: " & strFund
    End Sub
    

    Henrik
    AW: und nochmal :)
    09.09.2010 16:28:46
    Jule
    Hallo,
    also die Formel davor ging nun so halb.
    Das Problem lag an der Datenbank.
    Das mit dem objMatch klappt nicht.
    So soll ja dann das Dokument benannt werden.
    Aber da hast du ja was mit Value und wenn ich dann in den Pfad DeinErgebnis.Name schreibe klappt das nicht.
    Wie mache ich das? Das muss ja ein String sein.
    Anzeige
    AW: und nochmal :)
    09.09.2010 16:38:42
    Jule
    If tdef.Name Like "*_NL_*" Then
    Dim strText As String, strSuchText As String
    Dim Regex As Object, objMatch As Object, DeinErgebnis As String
    strText = tdef.Name
    strSuchText = "NL_[A-Z]+"
    Set Regex = CreateObject("Vbscript.Regexp")
    With Regex
    .Global = True
    .Pattern = strSuchText
    Set objMatch = .Execute(strText)
    DeinErgebnis = objMatch(0).Value
    End With
    DoCmd.OpenQuery tdef.Name
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, tdef.Name, strLaufwerk & ":\....\" & objMatch & ".xls", True, tdef.Name
    DoCmd.Close acQuery, tdef.Name
    End If
    Mein Problem ist objMatch. An diese Stelle soll das gematchte.
    Dann wäre mein Problem gelöst denke ich. Ich weiß es natürlich nicht. Aber es wurde aufjedenfall eine Abfrage geöffnet, die auch richtig gematched wurde.
    Anzeige
    DeinErgebnis verwenden
    09.09.2010 16:46:29
    EvilRik
    Eigentlich sollte DeinErgebnis Text liefern. Ist ja auch so definiert!?
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, tdef.Name, strLaufwerk & ":\....\" & DeinErgebnis & ".xls"
    

    AW: DeinErgebnis verwenden
    09.09.2010 16:52:04
    Jule
    Aber da steht ja .Value
    Das funktioniert leider nicht.
    Es klappt alles nur das nicht und das macht mich grad total wahnsinnig.
    Kostet Zeit und ich finde einfach keine Lösung *grml*
    AW: DeinErgebnis verwenden
    09.09.2010 17:00:22
    Jule
    Ich glaube es funktioniert jetzt :))))
    Daaaaaankeeeeeee vielmals !!!!

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige