Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Reguläre Ausdrücke oder Suchen-Ersetzen Funktion
zurück: Globale Prozeduren in anderen eingebundenen Dokumentvorlagen weiter: Suchfunktion in externer Excel-Datenbank Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Offen Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Ferencz
VBA Mitschwimmer


Verfasst am:
02. Feb 2006, 14:34
Rufname:
Wohnort: München

Reguläre Ausdrücke oder Suchen-Ersetzen Funktion - Reguläre Ausdrücke oder Suchen-Ersetzen Funktion

Nach oben
       

Hallo zusammen,

brauch wieder mal Eure Hilfe. Es geht darum, dass ich eine Suchen-Ersetzen Funktion als VBA Code brauche.
Als Input werden drei Zeichenketten (Strings) übergeben und als Output soll ich eine neue Zeichenkette rausbekommen. Dabei soll die erste Zeichenkette nach den Zeichen durchgesucht werden, die im den Zweiten übergeben wurden. Wenn was gefunden wird, soll es mit dem Zeichen aus der 3-ten ausgetauscht werden und mir dann wieder ausgegeben werden.

Beispiel: "DasIst1DateiNameDer%beinhaltet" "%" "_"

In diesem Beispiel soll in dem String "DasIst1DateiNameDer%beinhaltet" nach "%" gesucht werden und falls vorhanden durch "_" ersetzt weden.

Ich hoffe, Ihr könnt mir helfen.

Gruss, Ferencz
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
02. Feb 2006, 22:53
Rufname:
Wohnort: Leipzig


Funktion Replace - Funktion Replace

Nach oben
       

Hallo Ferencz,

die Funktion brauchst du nicht zu schreiben, die gibt es schon, sie heißt:
Code:
Replace

Such mal danach in der Hilfe, geht wunderbar:
Code:
Sub Test2()

Dim Quelle As String
Dim Suchtext As String
Dim Ersatz As String

Quelle = "DasIst1DateiNameDer%beinhaltet"
Suchtext = "%"
Ersatz = "_"

MsgBox Replace(Expression:=Quelle, Find:=Suchtext, Replace:=Ersatz, Compare:=vbBinaryCompare)

End Sub

_________________
Sei doch so nett und gib eine Rückmeldung, ob es klappt!
Gruß, Lisa

Guter Rat ist teuer!
Nepumuk
VB / VBA Programmierer


Verfasst am:
03. Feb 2006, 01:25
Rufname: Max
Wohnort: Dusseldoof

AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion - AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion

Nach oben
       

Liebste Lisa,

da Ferencz von Reguläre Ausdrücken schrieb, mal ein Beispiel dafür, wie das ganze mit Regex funktioniert.

Code:

Option Explicit

Public Function fncReplace( _
    ByVal strSource As String, _
    ByVal strPattern As String, _
    ByVal strReplace As String) As String
    Dim objRegEx As Object
    Set objRegEx = CreateObject("vbscript.regexp")
    With objRegEx
        .IgnoreCase = True
        .Global = True
        .MultiLine = True
        .Pattern = strPattern
        fncReplace = .Replace(strSource, strReplace)
    End With
    Set objRegEx = Nothing
End Function

Public Sub test()
    MsgBox fncReplace("DasIst1DateiNameDer%beinhaltet", "%", "_")
End Sub


Es macht natürlich in diesem Fall keinen Sinn, da nur ein Zeichen entfernt werden soll. Aber Regex bietet ausgefuchste Suchmuster an. Ein kleines, einfaches Beispiel, wie du damit prüfen kannst, ob eine Mailadresse ein gültiges Format hat:

Code:

Public Sub test2()
    Dim objRegEx As Object, objMatch As Object
    Set objRegEx = CreateObject("vbscript.regexp")
    With objRegEx
        .Global = True
        .Pattern = "^[a-z0-9\-\.]{2,63}@[a-z0-9\-\.]{2,63}\.[a-z]{2,4}$"
        .IgnoreCase = True
        Set objMatch = .Execute("abcdef@g-hijkl.mn")
    End With
    If objMatch.Count > 0 Then MsgBox "Gültige Adresse"
    Set objRegEx = Nothing
    Set objMatch = Nothing
End Sub

_________________
De fontibus non est disputandum

Gruß
Nepumuk Cool
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
03. Feb 2006, 12:19
Rufname:
Wohnort: Leipzig

AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion - AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion

Nach oben
       

Lieber Nepumuk,

hast mich wieder erwischt. Embarassed Ich weiß (noch) gar nicht, was reguläre Ausdrücke sind ... Aber zum Glück bist du ja da!

Lieben Gruß,
Lisa
Ferencz
VBA Mitschwimmer


Verfasst am:
03. Feb 2006, 12:55
Rufname:
Wohnort: München


AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion - AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion

Nach oben
       

Hallo zusammen,

das haut einem vom Hocker. Danke für eure Hilfe.

Gruss, Ferencz
Dickie40
Im Profil kannst Du frei den Rang ändern


Verfasst am:
18. Feb 2008, 18:01
Rufname:

AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion - AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion

Nach oben
       

Ich habe in einer Tabelle Telefonnummer (z.B. 491701234567), ich möchte die führende 49 durch 0 ersetzen.

Also ^49 ersetzen durch 0 !

Wie bekomme ich das mit VB hin ?


Gruss Dickie
samba
Im Profil kannst Du frei den Rang ändern


Verfasst am:
20. März 2009, 11:58
Rufname:
Wohnort: Hamburg

AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion - AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion

Nach oben
       

Hi,

ich habe diese Funktion "fncReplace" mal benutzt, da ich in mehreren Text-Dateien Änderungen vornehmen muss.

Leider wird nicht alles ersetzt, bzw. gefunden. Z.B.

Code:
{B1}{F75}Hier steht Text{B0}{FDEFAULT}\n       {B1}{F75}geht hier weiter{B0}{FDEFAULT}\n       {B1}{F75}und noch weiter


mein Such-String sieht dann aus wie:
Code:
suche = "{B1}{F75}Hier steht Text{B0}{FDEFAULT}" & vbCrLf & "       {B1}{F75}geht hier weiter" ' usw. 


Wahrscheinlich reicht es nicht nur die Zeilenumbrüche umzusetzen, oder...?

Danke für die Hilfe!
Ysda
auch VBA...


Verfasst am:
15. Mai 2009, 15:08
Rufname:

AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion - AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion

Nach oben
       

Hallo Nepumuk,


danke für deine Beispiele zu regulären Ausdrücken Smile
Ich hoffe, du kannst mir auch bei folgendem Problem weiterhelfen:

Ich suche ein Zeichen, das zwischen zwei Ziffern steht. Dieses Zeichen soll ersetzt werden.
Also z.B.:
"123,567 , 891,234" -> "123&567 , 891&234"

Ich habe es mit deiner Funktion fncReplace versucht, allerdings klappt das nicht so recht.

Debug.Print fncReplace("123,567 , 891,234", "\d,\d", "\d&\d")
-> 12\d&\d67 , 89\d&\d34

Debug.Print fncReplace("123,567 , 891,234", "\d,\d", "&")
->12&67 , 89&34

Bestimmt habe ich da irgendeine Kleinigkeit vergessen, kannst du mir den Trick verraten?


Danke und Gruß,
Ysda
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
15. Mai 2009, 17:36
Rufname:
Wohnort: Leipzig

AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion - AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion

Nach oben
       

Hallo Ysda,

ich bin zwar nicht Nepumuk, versuch aber mal eine Erklärung:

Die zu suchenden Ausdrücke müssen in Klammern gesetzt werden, damit sie gespeichert werden. Wenn Du nach einer Ziffer suchst:
Code:
(\d)

Zum Ersetzen wird dann auf den 1. Ausdruck verwiesen mit:
Code:
$1

auf den 2. mit $2 usw. Dein Beispiel geht dann so:
Code:
Debug.Print fncReplace("123,567 , 891,234", "(\d),(\d)", "$1&$2")

Ergebnis: 123&567 , 891&234

_________________
Sei doch so nett und gib eine Rückmeldung, ob es klappt!
Gruß, Lisa

Guter Rat ist teuer!
Ysda
auch VBA...


Verfasst am:
18. Mai 2009, 09:21
Rufname:

AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion - AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion

Nach oben
       

Hallo Lisa,

lieben Dank, das klappt Smile
Genau diese $ haben mir gefehlt.

Viele Grüße,
Ysda
rahan
Word 2007 Liebhaber


Verfasst am:
16. Feb 2010, 10:01
Rufname:


Re: AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion - Re: AW: Reguläre Ausdrücke oder Suchen-Ersetzen Funktion

Nach oben
       Version: Office 2003

Hallo Leute,

Der Code von Nepumuk,

ersetzt nur 1 mal einen Ausdruck. Nicht aber wenn er mehrmals vorkommt.
Wie kann man das erreichen?

Code:

Option Explicit

Public Function fncReplace( _
    ByVal strSource As String, _
    ByVal strPattern As String, _
    ByVal strReplace As String) As String
    Dim objRegEx As Object
    Set objRegEx = CreateObject("vbscript.regexp")
    With objRegEx
        .IgnoreCase = True
        .Global = True
        .MultiLine = True
        .Pattern = strPattern
        fncReplace = .Replace(strSource, strReplace)
    End With
    Set objRegEx = Nothing
End Function



Gruß Rahan

_________________
(\__/)
(O.o )
(> < )
This is Bunny. Copy Bunny into your signature to help him on his way to world domination.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Word Serienbriefe: «Nächster Datensatz» Funktion wird mitgedruckt 6 Meyer11 223 25. März 2014, 20:17
Meyer 11 «Nächster Datensatz» Funktion wird mitgedruckt
Keine neuen Beiträge Word Serienbriefe: Serienbrief, Word 2007, Wenn-Dann Funktion inkl. Seriendruck 9 Icerocks 124 24. März 2014, 21:18
EPsi1 Serienbrief, Word 2007, Wenn-Dann Funktion inkl. Seriendruck
Keine neuen Beiträge Word Serienbriefe: Feld(-Funktion) nicht drucken wenn leer! Word 2010/11 0 Paulles 405 18. März 2013, 12:20
Paulles Feld(-Funktion) nicht drucken wenn leer! Word 2010/11
Keine neuen Beiträge Word Serienbriefe: Funktion: Nächster Datensatz 1 abqpcd 906 08. Nov 2011, 11:22
abqpcd Funktion: Nächster Datensatz
Keine neuen Beiträge Word Formate: Schriftgröße bei Funktion FileName ändert sich / Word 2007 2 Ungelöst 1012 19. Mai 2011, 09:56
Gast Schriftgröße bei Funktion FileName ändert sich / Word 2007
Keine neuen Beiträge Word Serienbriefe: Serienbrief - verschachtelte Funktion - 0-Wert erscheint 8 Gast 1110 30. Dez 2010, 13:34
charlybrown Serienbrief - verschachtelte Funktion - 0-Wert erscheint
Keine neuen Beiträge Word Serienbriefe: Serienbrief - Verschachtelte Funktion 5 Isny 7517 20. Dez 2010, 08:42
Angel112 Serienbrief - Verschachtelte Funktion
Keine neuen Beiträge Word Formate: "Format übrtragen" Funktion auf mehrere Abschnitte 2 Montgomery 1105 04. Aug 2010, 14:57
Montgomery "Format übrtragen" Funktion auf mehrere Abschnitte
Keine neuen Beiträge Word VBA Programmierung (Makros): Dateiendung setzen für "speichern unter..." Funkti 1 Gast 1302 17. Mai 2010, 16:12
mumpel Dateiendung setzen für "speichern unter..." Funkti
Keine neuen Beiträge Word Formate: Frage zur "Ersetzen"-Funktion 2 Merkur 1230 22. Dez 2009, 14:39
Merkur Frage zur "Ersetzen"-Funktion
Keine neuen Beiträge Word VBA Programmierung (Makros): Excel oder Word, Funktion 3 palmenmann 303 29. Mai 2009, 11:41
palmenmann Excel oder Word, Funktion
Keine neuen Beiträge Word Formate: Funktion Formular schützen beim Dokument start einschalten 6 SunDowner 1421 19. Feb 2009, 14:22
Gast Funktion Formular schützen beim Dokument start einschalten
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Project