Access Design:Makros konvertieren

Aus DBWiki
Wechseln zu: Navigation, Suche

Vorbemerkung

Konvertierte Makros stellen keinen besonders guten VBA-Code dar - das liegt zum einen an den naturgemäß fehlenden Kontrollstrukturen und Variablen, zum anderen an der exzessiven Verwendung von Konstrukten wie DoMenuItem oder DoCmd, die man in "sauberem" VBA-Code nach Möglichkeit vermeiden sollte. Ganz sicher stellt die Konversion von Makros keinen Weg dar, herauszufinden, wie es "richtig als VBA-Code aussehen sollte", als Notbehelf bei der schrittweisen Eliminierung von Makros mag diese Vorgehensweise allerdings ihre Berechtigung haben.

Als Beispiel mag folgendes Makro dienen:

AccMakroSample.gif

Nach der Konversion erhält man folgenden VBA-Code:

If (MsgBox("Abfrage ausführen?", 36) <> 6) Then
  Exit Function
End If
DoCmd.SetWarnings False
DoCmd.OpenQuery "MeineAbfrage", acNormal, acEdit
DoCmd.SetWarnings True
</pre>
Sauberer VBA-Code würde eher so aussehen:
<pre>
If MsgBox("Abfrage ausführen?", vbYesNo + vbQuestion) <> vbYes) Then
  CurrentDB.Execute "UPDATE MeineTabelle SET MeinFeld = 0"
End If

Wie kann man Makros konvertieren?

Die Konversion von Makros funktioniert wie folgt:

1. Als erstes muss man das Makro in der Entwurfsansicht öffnen und geht auf "Datei/Speichern unter...".

Makros konvertieren - Schritt #1

2. Im nächsten Dialog wählt man "Modul" aus und bestätigt mit "OK".

Makros konvertieren - Schritt #2

3. Danach lässt man am besten die beiden untenstehenden Optionen aktiviert und klickt auf "Konvertieren".

Makros konvertieren - Schritt #3

4. Nach erfolgreicher Umwandlung gibt es auch eine Meldung.

Makros konvertieren - Schritt #4

5. Das konvertierte Makro sollte anschliessend unter den Standard-Modulen zu finden sein. Im Beispiel hieß das Makro vorher "MeinMakro". Das Modul kann man jetzt im Entwurf öffnen und die darin enthaltene Funktion anpassen. Überall dort, wo das Makro vorher aufgerufen wurde, muss man den Start des Makros an die übliche Aufruf-Form von Funktionen "=FunktionsName()" (ohne Anführungszeichen und natürlich mit dem richtigen Funktionsnamen) anpassen.

Makros konvertieren - Schritt #5

Um nicht die Übersicht zu verlieren, sollte man die so erzeugten Funktionen dann auch besser zusammenfassen - also nicht je Funktion ein Modul, sondern die Funktionen z.B. per Zwischenablage in ein gemeinsames Modul legen. Und wie schon oben geschrieben: Zumindest langfristig sollte man den so erzeugten Code durch "richtiges VBA" ersetzen.