# Makro

Ein Makro (kurz für Makrobefehl) ist in der Softwareentwicklung eine unter einer bestimmten Bezeichnung (Makroname) zusammengefasste Folge von Anweisungen oder Deklarationen, um diese (anstelle der Einzelanweisungen, i. d. R. an mehreren Stellen im Programm) mit nur einem einfachen Aufruf ausführen zu können. Alle Anweisungen des Makros werden automatisch an der Programmstelle ausgeführt, an denen das Makro codiert wurde.
Makros sind eine Variante von Unterprogrammen und können (je nach Implementierung) auch mit Parametern aufgerufen werden. Man unterscheidet Systemmakros (wie OPEN zum Dateiöffnen und PRINT zum Drucken) und von Benutzern selbst erstellte Makros – zum Beispiel um Prüf- oder Berechnungsfunktionen auszuführen wie die Gültigkeitsprüfung für die Internationale Bankkontonummer (IBAN).
Makros werden z. B. in der Tabellenkalkulation, in der Textverarbeitung und in Datenbanken eingesetzt. Die Arbeit mit diesen Programmen wird erleichtert und beschleunigt, indem eine Befehlsfolge, die häufig gebraucht wird, mit Hilfe eines Makros aufgerufen werden kann. Je nach Softwaretyp können Makros auch über einen Tastenschlüssel oder mit Hilfe eines Menünamens aufgerufen werden.
Üblicherweise werden Programme in einer der Programmiersprachen (z. B. Assembler, BASIC, Pascal) kodiert. Es ist auch möglich, innerhalb einer Software (z. B. Microsoft Office) eine eigene Programmiersprache zu benutzen. Dabei kann die Programmiersprache softwarebezogen (z. B. Programmierungen in Microsoft Excel mit VBA) oder zur Programmierung ganz allgemein angewandt werden (z. B. Lösungen eines mathematischen Problems).

## Etymologie

Das Wort Makro ist entlehnt aus dem gleichbedeutenden engl. macro, eine Verkürzung von macroinstruction, wörtlich in etwa „Groß-Befehl“ (griechisch, makros bedeutet „groß“ oder „weit“).

## Makros in der Programmierung

Ein Makro in der Programmierung ist ein kleines Stück Programmcode, das von einem Interpreter oder Präprozessor durch ein größeres Stück Programmcode ersetzt wird. Damit ist es möglich, oft wiederkehrende Programmstrukturen durch Kürzel zu vereinfachen oder literale Konstanten durch semantische Bezeichnungen zu ersetzen.
* Programme, die Zeichenfolgen durch andere Zeichenfolgen ersetzen, werden als Makroprozessoren bezeichnet. Die Definition einer zu ersetzenden Zeichenfolge wird darin als Makro bezeichnet. Bekannte Makroprozessoren sind der C- bzw. C++-Präprozessor, das Unix-Programm m4 sowie die Textsatzprogramme troff und TeX. Im Makroassembler wird ein solcher Makroprozessor eingesetzt, um sich wiederholende Strukturen einfacher definieren zu können.
* In Programmiersprachen wie Lisp sind Makros Metaprogramme, die bei der Übersetzung zunächst in einen ausführbaren Programmcode umgesetzt werden. Makros dienen dort dazu, wiederkehrende Programmstrukturen abzubilden: Jeder Entwickler kann bei Bedarf neue Kontrollstrukturen, Entwurfsmuster, OOP-Systeme etc. direkt in der Sprache implementieren (Syntaxabstraktion). In Programmiersprachen ohne Makros wären dazu Veränderungen in der Sprachdefinition notwendig.

## Makros in Anwendungsprogrammen

Hier sind es nicht die Programmierer, sondern die Benutzer der Software, die per Makros gewisse Arbeitsschritte effizient zusammenfassen können.
* Unter Windows wird eine Automatisierung der Oberfläche als „Makro“ bezeichnet. Viele Anwendungsprogramme (zum Beispiel die der Microsoft Office Gruppe wie Word, Excel, PowerPoint oder Outlook) erlauben die Aufzeichnung von typischen Befehlsfolgen und Bedienungsschritten als Makro (siehe Makrorecorder). Bei den meisten Microsoft-Anwendungsprogrammen dient als Aufzeichnungssprache die Programmiersprache Visual Basic for Applications (VBA). Bei den Anwendungsprogrammen der Microsoft Office Gruppe kann der aufgezeichnete VBA-Makro-Code in einer in der Anwendung selbst integrierten VBA-Entwicklungsumgebung mit dem Visual Basic Editor eingesehen und weiterbearbeitet werden. Der VBA-Makro-Code bei den Microsoft Office Anwendungen ähnelt stark der Programmiersprache Visual Basic. VBA zeichnet sich aber besonders durch die Möglichkeit des direkten Zugriffs auf die anwendungsspezifischen Objekte aus. Microsoft Excel erlaubt es aufgezeichneten VBA-Code auch als Add-in zu verpacken und weiterzugeben. Gemäß der oben genannten Definition (Ersetzung von wenig Text durch viel Text) sind VBA-Makros eigentlich keine Makros, sondern eigenständige kleine Programme, welche als Laufzeitumgebung den VBA-Interpreter benötigen.
* In Microsoft Access wird auch eine spezielle Art der Programmierung in tabellarischer Form als „Makro“ bezeichnet, wobei diese Makros aber auch mit VBA kombiniert werden können.
* In manchen CAD-Programmen werden vorgefertigte Teile, die aus einer Bibliothek hinzugeladen werden können, als Makro bezeichnet. Ein Architekt muss also nicht jedes Waschbecken neu zeichnen, ein Elektroplaner kann auf fertige Schalter und Steckdosen zurückgreifen. Diese Bedeutung von Makro für einen Baustein steht im Gegensatz zu den sonstigen Bedeutungen, nach denen ein Makro generell etwas Ausführbares ist.