Reguläre Ausdrücke (RegExp) in VBA und MS-Access Abfragen
Oftmals fehlt einem die Funktion in Access, Felder oder Strings mit Regulären Ausdrücken (Regular Expressions) zu durchsuchen. Leider ist dies ohne etwas Programmierarbeit auch nicht so einfach möglich. Mit 5 Minuten Zeitaufwand und dieser Anleitung sollte es jedoch gelingen.
Wir haben danach eine Funktion mit folgendem Aufruf:
Diese Funktion gibt entweder den zutreffenden String aus, sonst NULL.
Beispiel der RegExp-Funktion
regexp("EAN:01234567", "EAN:[0-9]{8}") gibt EAN:01234567 zurück
regexp("01234567", "EAN:[0-9]{8}") gibt NULL zurück
Beispiel-Abfrage in Access
In Access-Abfragen kann man die regexp-Abfrage nicht direkt als Bedingung hinterlegen. Daher wird dort die Abfrage schon mal eingeschränkt. Die regular expression wird zusätzlich als Ausdruck hinterlegt. Als Kriterium kann man dann entweder auf NULL überprüfen oder auf das gewünschte Ergebnis.
Konfiguration von MS Access für RegExp
In Access drücken Sie ALT-F11, um den VBA-Editor zu öffnen und legen Sie ein neues Modul an, indem Sie auf Einfügen > Modul klicken. Klicken Sie im Menü auf Extras > Verweise und haken Sie dort "Microsoft VBScript Regular Expressions 5.5" an. Dann fügen Sie folgenden Code in das Modul ein. Bitte achten Sie darauf, dass die Zeile Option Compare Database nur einmal vorkommt!
Option Compare Database
Option Explicit
Function regexp(StringToCheck As Variant, SearchPattern As String, Optional CaseSensitive As Boolean = True)
Dim re As New regexp
re.Pattern = SearchPattern
re.Global = False
re.IgnoreCase = Not CaseSensitive
Dim m
For Each m In re.Execute(StringToCheck)
regexp = m.Value
Next
End Function