1.1k Aufrufe
Gefragt in Datenbanken von
Hallo,

benötige rat eines "Profis"

Ich habe ein Access DB 2003 mit der ich verknüpft bin mit Outlook (Postausgang) las Tabelle. Nun möchte ich die Emailadresse die im Feld "Inhalt" vorhanden ist auslesen und in einen weiteren Feld im gleichen Datensatz eintragen.

Im Feld "Inhlat" sind auch anderen Informationen neben der Emailadresse. Sie steht auch nicht immer an der selben Stelle.

HILFE, HILFE !

2 Antworten

0 Punkte
Beantwortet von
das geht schon, wichtig ist nur dass keine weiteren @ zeichen in dem feld vorkommen.

hier ein beispiel wie man eine email adresse aus einem text extrahieren kann:

www.herber.de/forum/archiv/320to324/t322685.htm
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo loberico,

ich habe dir mal einen Code aus dem www zusammenkopiert, der für Access einigermaßen gut funktioniert. Er liefert dir alle E-Mailadressen aus einer Zeichenkette. Einige E-Mailadressen interpretiert er noch falsch (z.B. a....b.c@d.de liefert b.c@d.de), für den "Hausgebrauch" aber allemal gut. Ich benutze im Code die LIB "RegExp", die du über den Menüpunkt Extrays-->Verweise einbinden musst. Die LIB heisst "Microsoft VBScript Regular Expression x.y". Der Code sit so aus:

Public Sub Email_Extraktion()
s = "test Test a.b.c@d.e.f.de falsch ist a..b@net..com neu test@test.com" & vbCrLf & " Zeile 2 supportnet.hinki@spamgourmet.com ende"

Dim myRegExp As RegExp
Dim myMatches As MatchCollection
Dim myMatch As Match

Debug.Print s
Debug.Print "________________________________________________"

Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Global = True
myRegExp.Pattern = "[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"
Set myMatches = myRegExp.Execute(s)
For Each myMatch In myMatches
Debug.Print myMatch.Value & vbCrLf
Next
End Sub

Ich gebe im Direktfenster die E-Mailadressen eines vorbelegten Strings aus, als Test sicher zu gebrauchen. Falls du nur die erste E-Mailadresse benötigtst, musst du die for-next-Schleife raus schmeißen. Du kannst die SUB auch in eine FUNCTION umwandelt und die erste E-Mailadresse direkt in ein weiteres Feld durch SQL in einer Abfrage ausgeben.

Gruß
Ralf
...