jensgebken
Goto Top

Access - mit VBA nach Text suchen

Hallo gemeinschaft,

ich erstelle mit einem Outlook vba script txt Dateien, die ich dann später wieder in access Tabelle importiere

nun ist es so, dass die txt dateien zum Teil recht gross sind und ich nicht immer an den exakt gleixchen Zeilen entsprechende textstellen finde - in diesem Format und auch die Ausrichtung kommt die Textdatei

gibt es eine elegante Möglichkeit, dass ich in eine Variabel
Kunde
Adresse
Plz
Ort
telefon
email bekomme


hiervor steht Text
Kund
enna
me:
Andr
e
Test

Adres
se/Ha
usnu
mmer
: Hans
Straß
e 13a
PLZ/
Ort:
3348
4
Bruch
köbel
Land:
Deuts
chlan
d
Telef
on
(tags
über):
Telef
on
(aben
ds):
+017
7333
3333
E-
Mail
Adres
se:
test
@GM
ail.co
m
hier kommt weiterer text

Content-ID: 7923257682

Url: https://administrator.de/forum/access-mit-vba-nach-text-suchen-7923257682.html

Ausgedruckt am: 02.04.2025 um 01:04 Uhr

7907292512
7907292512 22.07.2023 aktualisiert um 17:15:04 Uhr
Goto Top
em-pie
em-pie 22.07.2023 um 21:47:22 Uhr
Goto Top
Moin,

Keine Ahnung, ob ich dich verstanden habe, aber InStr() sollte dein Problem lösen, denke ich.
mayho33
mayho33 22.07.2023 um 22:13:20 Uhr
Goto Top
Hi,

Du sucht am besten nach Pattern, also Muster im Text. Dafür eignet sich Regex besonders gut.

Hier sind ein paar Beispiele angeführt wie das in VBS/VBA geht:
https://www.mikesdotnetting.com/article/24/regular-expressions-and-vbscr ...
jensgebken
jensgebken 24.07.2023 um 08:54:47 Uhr
Goto Top
Hi

lieben dank mit den Pattern - nur wie dann weiter

gesetz dem fall ich suche nach Kundenname:

wie komme ich dann an den Kundennamen, der hinter dem Doppelpunkt steht - und nur den und nicht weitere buchstaBEN
7907292512
7907292512 24.07.2023 aktualisiert um 09:29:36 Uhr
Goto Top
Set regex = CreateObject("vbscript.regexp")    
regex.IgnoreCase = True
regex.Pattern = "Kundenname:\s*([^\r\n]*)"    
set matches = regex.Execute(txtContent)
if matches.count > 0 then
   strName = Trim(matches(0).submatches(0))
End if
Lerne Regex my friend!
mayho33
mayho33 24.07.2023 um 09:51:30 Uhr
Goto Top
Zitat von @jensgebken:
wie komme ich dann an den Kundennamen, der hinter dem Doppelpunkt steht - und nur den und nicht weitere buchstaBEN
Es gibt eine tolle Site um dein Pattern zu prüfen. Ich verwende die seit Jahren. Ist auch ein kleines Cheatsheet dabei:
Regexr.com


Zitat von @7907292512:
Lerne Regex my friend!
Du sagst es Siddius 😉
jensgebken
jensgebken 27.07.2023 um 14:53:38 Uhr
Goto Top
klappt super klasse

nur ein Problemfall

das erkennt der code nicht -Telefon (tagsüber):

Set regex = CreateObject("vbscript.regexp")  
regex.IgnoreCase = True
regex.Pattern = "Telefon (tagsüber):\s*([^\r\n]*)"  
Set matches = regex.Execute(strName)
If matches.Count > 0 Then
   strTelefon1 = Trim(matches(0).submatches(0)

Habt ihr da eine Idee?
7907292512
7907292512 27.07.2023 aktualisiert um 15:00:43 Uhr
Goto Top
Klammern () sind Sonderzeichen (wie viele andere) in Regex und leiten einen Submatch ein, deswegen musst du diese mittels Backslash escapen wenn du sie literal im Pattern matchen willst:
regex.Pattern = "Telefon \(tagsüber\):\s*([^\r\n]*)"