window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Programmieren mit Makros, Teil I

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Makros sind eine Möglichkeit, einfache Vorgänge unter Access zu automatisieren. Sie sind zwar erheblich unflexibler als etwa VBA-Code, haben aber dennoch ihre Berechtigung – zum Beispiel in Form zweier Spezialmakros namens AutoExec und AutoKeys, die beim Start beziehungsweise beim Ausführen von Tastenkombination aufgerufen werden können. Da Microsoft mit Access 2010 die Webdatenbanken eingeführt hat, die ausschließlich mit Makros programmiert werden können, wollen wir an dieser Stelle eine Einführung in die Programmierung mit Makros bieten.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1402_Makros.mdb.

Makros und VBA

Makros und VBA eignen sich beide zur Programmierung von Ereignissen in Access. In Abgrenzung zu anderen Office-Anwendungen wie Word, Excel und Co. müssen wir hier jedoch eine kurze Begriffsklärung vornehmen: Bei den übrigen Office-Anwendungen spricht man in Zusammenhang mit einer VBA-Prozedur von einem Makro. Dort lassen sich fast alle Aktionen als Makro aufzeichnen, was aber bedeutet, dass die Office-Anwendung eine VBA-Prozedur erstellt, welche die in der Anwendung durchgeführten Tätigkeiten in Form von VBA-Anweisungen enthält.

Ein solches Word- oder Excel-Makro ist nicht mit einem Makro in Access zu vergleichen. Unter Access spricht man unter VBA zum Beispiel von Prozeduren oder Funktionen, gegebenenfalls auch von Routinen, aber niemals von Makros.

Ein Makro ist unter Access ein eigener Objekttyp, dessen Vertreter im Navigationsbereich eine eigene Kategorie besitzen. Die Anweisungen eines Makros werden nicht in Form von Codezeilen eingegeben, sondern als Makrobefehle eingegeben beziehungsweise ausgewählt.

Spezialmakros

Die einzigen beiden Fälle, in denen wir bislang auf die Programmierung von Makros eingegangen sind, finden Sie in den Artikeln Aktion beim Start: Das AutoExec-Makro und AutoKeys: Globale Tastenkombinationen. Das AutoExec-Makro wird direkt beim Start von Access ausgeführt.

Sie können damit also Aktionen auslösen, die in Zusammenhang mit dem Start ausgeführt werden sollen, also etwa das Neuverknüpfen mit einer Backend-Datenbank et cetera. Mit dem AutoKeys-Makro definieren Sie Tastenkombinationen, die global, also anwendungsweit, gültig sind.

Wenn Sie also etwa verhindern möchten, dass der Benutzer mit der Tastenkombination Strg + G das Direktfenster öffnet, können Sie diese Tastenkombination im AutoKeys-Makro entsprechend umbiegen. Im Gegensatz zu den Tastenkombinationen, die Sie in Formularen mit Ereignissen wie Bei Taste ab oder Bei Taste auf abfangen können, werden die mit dem AutoKeys-Makro definierten Tastenkombinationen zu jedem Zeitpunkt ausgelöst und nicht nur dann, wenn ein bestimmtes Formular den Fokus besitzt.

Makros ab Access 2007

Mit Access 2007 hat Microsoft begonnen, die Möglichkeiten der Makros aufzuwerten. Wenn Sie bereits früher mit Makros programmiert haben, sind die folgenden Hinweise für Sie interessant – aber auch für alle anderen:

  • Makros können nicht nur gespeichert und als Wert von Ereigniseigenschaften angegeben werden. Sie können Makros auch in die Ereignisse von Formularen, Berichten und Steuerelementen einbetten. Das Makro wird dann nicht mehr als eigener Eintrag in der Kategorie Makros des Navigationsbereichs angezeigt, sondern direkt im Formular oder im Bericht gespeichert.
  • Der VBA-Code und bestimmte Makrobefehle werden in Access-Datenbanken nicht ausgeführt, wenn diese nicht als vertrauenswürdig eingestuft sind. Sie können im Makro-Editor nun angeben, dass nur solche Makros angezeigt werden, die auch bei nicht vertrauenswürdigen Datenbanken ausgeführt werden können.
  • Mit Access 2007 gibt es erstmals eine Fehlerbehandlung und die Möglichkeit, Makros zu debuggen. Makroaktionen wie BeiFehler oder ClearMacroError helfen dabei ebenso wie MakroEinzelschritt, mit der Sie innerhalb des Makros (ähnlich einer Haltemarke) in den Einzelschrittmodus wechseln können.
  • Bis Access 2003 konnten Makros weder auf Variablen zugreifen noch solche mit Werten füllen. Mit Access 2007 wurden die sogenannten Temporären Variablen eingeführt. Diesen können Sie Werte zuweisen und diese auch wieder abfragen. Interessant ist, dass es auch in VBA ein entsprechendes Objekt gibt, sodass ein Austausch zwischen VBA-Routinen und Makros erfolgen kann.

Makros in Access 2010

Mit Access 2010 geht der Reigen der Neuerungen im Bereich der Makros weiter:

  • Die wichtigste Neuerung ist der neue Makro-Editor. Er liefert eine wesentlich bessere Benutzeroberfläche zum Erstellen von Makros, hier vor allem bei der Umsetzung von Bedingungen und Verschachtelungen.
  • Makroaktionen können Sie direkt aus der Liste im Bereich der zum Makro hinzugefügten Befehle auswählen (siehe Bild 1).
  • Auswählen einer Makroaktion direkt im Makro-Editor ...

    Bild 1: Auswählen einer Makroaktion direkt im Makro-Editor …

  • Es gibt aber auch einen übersichtlichen Katalog, in dem die Makros nach Kategorien sortiert sind (siehe Bild 2).
  • ... oder aus dem Aktionskatalog.

    Bild 2: … oder aus dem Aktionskatalog.

  • Zusätzlich können Sie in Makros nun auch IntelliSense nutzen. Damit greifen Sie beispielsweise auf alle eingebauten Access-Funktionen zu, aber auch auf benutzerdefinierte VBA-Funktionen zu. Außerdem stehen die Objektnamen etwa von Tabellen, Abfrage, Formularen et cetera zur Auswahl (siehe Bild 3).
  • IntelliSense im Makro-Editor von Access 2010

    Bild 3: IntelliSense im Makro-Editor von Access 2010

  • Es gibt eine Wenn-Bedingung (mit Sonst- und Sonst Wenn-Zweigen), die auch verschachtelt angeordnet werden können.
  • Sie können bereits erstellte Makros ganz einfach als Untermakros zu weiteren Makros hinzufügen. Diese werden im Aktionskatalog in der Kategorie In diesen Datenbank|Makros eingeblendet.
  • Sie können Teile des Makrocodes kopieren und an anderer Stelle wieder einfügen. Das dabei verwendete Format ist XML. Sie können ein Makro also auch kopieren und per E-Mail an einen anderen Entwickler versenden.
  • Eine weitere wichtige Neuerung sind die Datenmakros, die ähnlich etwa wie die Trigger im SQL Server arbeiten. Diese Makros werden Tabellen zugeordnet und bei bestimmten Datenaktionen ausgelöst – wie etwa das Anlegen eines neuen oder das ändern oder Löschen eines bestehenden Datensatzes.

Makros in Access 2013

Unter Access 2013 gab es keine nennenswerten Neuerungen. Anscheinend sind sogar drei Makrobefehle weggefallen (mehr zu den verschiedenen Makro-Befehlen weiter unten):

  • SammelnDatenüberEmail
  • StartenNeuerWorkflow
  • WorkflowAufgaben

Verschiedene Makro-Arten

Unter Access gibt es die folgenden Makro-Arten:

  • normale Makros, die über den Menübefehl Erstellen|Makros und Code|Makro angelegt und unter einem von Ihnen vergebenen Namen gespeichert und im Navigationsbereich angezeigt werden
  • reine Ereignis-Makros, die als Makro für ein Ereignis eines Formulars, Berichts oder Steuerelements angelegt werden. Diese erscheinen nicht im Navigationsbereich.
  • Datenmakros sind Makros, die durch Ereignisse in Tabellen ausgelöst werden, also beim Anfügen, Löschen oder ändern von Datensätzen.
  • benannte Makros sind Makros, die Sie im Kontext einer bestimmten Tabelle anlegen und die entweder durch ein Datenmakro oder durch ein herkömmliches Makro ausgelöst werden können.

Makro erstellen

Die folgenden Beispiele wurden unter Access 2010 durchgeführt. Wir möchten erstens die neuen Möglichkeiten untersuchen und zweitens die aktuelle Benutzeroberfläche zur Erstellung von Makros nutzen. Für einen ersten überblick der Benutzeroberfläche erstellen Sie zunächst mit dem Ribbon-Eintrag Erstellen|Makros und Code|Makro ein neues Makro. Fügen Sie diesem nun per Auswahl über das Kombinationsfeld Neue Aktion hinzufügen einfach den Befehl Meldungsfeld hinzu.

Access zeigt nun direkt an Ort und Stelle die vier Eigenschaften für die Meldungsfeld-Makroaktion an (siehe Bild 4): Meldung, Signalton, Typ und Titel.

Ein erstes Makro mit einem Meldungsfeld

Bild 4: Ein erstes Makro mit einem Meldungsfeld

Die Eigenschaften sollten von der VBA-Funktion MsgBox bekannt sein, daher gehen wir an dieser Stelle nicht näher auf die Optionen ein. Speichern Sie das Makro unter dem Namen macMeldungsfeld.

Makro aufrufen

Die einfachste Möglichkeit, ein Makro aufzurufen, ist ein Doppelklick auf den Namen des Makros im Navigationsbereich von Access (siehe Bild 5).

Makro per Doppeklick starten

Bild 5: Makro per Doppeklick starten

Natürlich können Sie ein Makro auch bereits beim Erstellen durch einen Mausklick auf den Ribbon-Befehl Ent-wurf|Tools|Aus-führen aufrufen.

Makro per VBA aufrufen

Eine weitere Möglichkeit für den Aufruf eines Makros ist die Methode RunMacro des DoCmd-Objekts. Den folgenden Befehl können Sie beispielsweise im Direktbereich des VBA-Editors absetzen, aber auch in Funktionen oder Prozeduren integrieren:

DoCmd.RunMacro ""

Der Beispielaufruf aus Bild 6 zeigt, dass die RunMacro-Methode neben dem Makronamen noch zwei weitere Parameter anbietet:

Aufruf eines Makros im Direktbereich des VBA-Editors

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar