Reguläre Ausdrück (RegExp) in MS-Access Abfragen und VBA

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:

regexp(<string>, <suchmuster>[, case sensitive = true])

 

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

Access-Abfrage mit Regular-Expression

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