Informatik :: VBA :: Einführung
[Verfügbarkeit] | [Sprache] | [Kompatibilität zu VB.NET] | [Sicherheit] | [Verbreitung] | [Literatur] | [Siehe auch] | [Quelle] |
Visual Basic for Applications (VBA) ist eine zu den Microsoft-Office-Programmen gehörende Programmiersprache.
Sie wurde aus dem von Microsoft entwickelten BASIC-Dialekt Visual Basic (VB) abgeleitet und zur Steuerung von Abläufen innerhalb der Microsoft-Office-Programme entwickelt.
VBA ist seit Mitte der 1990er Jahre der Nachfolger der bis zu diesem Zeitpunkt in den Microsoft-Office-Anwendungen enthaltenen verschiedenen Makro-Sprachen.
VBA ist in den Microsoft-Office-Programmen Word (seit Version 97), Excel (seit Version 95), Access (seit Version 95), Project, PowerPoint, FrontPage, Visio (seit Version 2000) und Outlook verfügbar.
Darüber hinaus wird VBA von der Corel Corporation lizenziert und ist in Corel Draw und Corel Photo-Paint verfügbar.
VBA wird auch als Makrosprache in AutoCAD, ArcGIS, ARIS, CATIA, MindManager und vielen anderen Anwendungen eingesetzt.
Microsoft Office 2008 für den Apple Macintosh bietet keine VBA-Unterstützung mehr, diese ist jedoch für den Nachfolger wieder in Aussicht gestellt.
VBA gilt als leistungsfähige Skriptsprache und ist die am stärksten verbreitete Möglichkeit, auf Microsoft-Office-Anwendungen (Excel, Word, Access) basierende Programme zu erstellen.
VBA ist eine interpretierte Programmiersprache, deren Syntax der von Visual Basic entspricht. Die Möglichkeiten und die Leistungsfähigkeit von VBA sind allerdings gegenüber Visual Basic deutlich reduziert. Beispielsweise wird ein VBA-Skript zwar vorkompiliert, um Variablen- und Konstantentabellen aufzubauen und syntaktische Überprüfungen durchzuführen, ein Kompilieren bis hin zu ausführbarem Maschinencode ist jedoch nicht möglich.
VBA ist vor allem ür prozedurale Programmierung konzipiert. Klassen und Objekte können zwar syntaktisch dargestellt und implementiert werden, unterliegen jedoch den auch in Visual Basic Classic bestehenden Einschränkungen (fehlende Implementierungsvererbung); andere Merkmale wie Datenkapselung, Interface-Vererbung und Laufzeitpolymorphie können hingegen verwendet werden.
Der Zugriff über VBA auf das jeweilige Wirtsprogramm (Word, Excel etc.) erfolgt über eine meist gut dokumentierte Programmierschnittstelle. In den jeweiligen Anwendungen stehen neben dem VBA-Kern (Kontrollstrukturen, Datentypen, mathematische Funktionen, Dateisystem) spezielle Objekte des Wirtsprogramms zur Verfügung. Diese Objekte ermöglichen es, Abläufe des jeweiligen Wirtsprogramms zu automatisieren. Da diese Schnittstelle über das Component Object Model (COM) realisiert wird, kann eine VBA-Anwendung auch auf andere COM-Komponenten als die vom Wirtsprogramm zur Verfügung gestellten zugreifen.
Bis zur Visual-Basic-Version 6.0 ist es problemlos möglich, Module und Formulare zwischen VBA und VB auszutauschen. Seit der Umstellung von Visual-Basic auf das .NET-Framework ist es nicht mehr möglich, Module und Formulare direkt auszutauschen, da sich das Dateiformat geändert hat.
Allerdings können Module (also Quelltext-Dateien) durch Umbenennung und gezielte Anpassungen an die .NET-Datenstrukturen überführt werden. Bei Formularen ist dies nicht möglich, sie müssen komplett neu erstellt werden. Allerdings gibt es die Möglichkeit, in Visual Studio .NET mit den Visual Studio Tools for Office System (VSTO) Add-Ins für MS Office zu entwickeln, die die gleichen Aufgaben übernehmen können wie klassische Makros.
Seitens der Fa. Microsoft bestehen überlegungen, VBA langfristig durch eine .NET-basierte Technologie zu ersetzen.
Die Anwendungsmöglichkeiten von VBA sind nicht auf die Automatisierung von Wirtsanwendungen beschränkt; der Leistungsumfang umfasst auch wesentliche Funktionen von Visual Basic.
Daher können VBA-Anwendungen, ebenso wie alle anderen Windows-Anwendungen, schädlichen Code enthalten.
Statt eines a-priori-Sicherheitskonzeptes, bei dem möglicherweise gefährliche Funktionen schon beim Sprachentwurf eingeschränkt oder die Makroausführung mittels einer Sandbox vom restlichen System abgeschirmt wird, stellt Microsoft-Office lediglich im Nachhinein Methoden zur Absicherung der Programmausführung wie etwa eine Prüfungsmöglichkeit eventuell vorhandener Makrozertifizierung zur Verfügung.
Diese Faktoren, kombiniert mit der leichten Erlernbarkeit von VBA, führten zur Verbreitung von Word-Makroviren. Neuere MS-Office-Versionen fragen vor der Ausführung von VBA-Programmen nach und empfehlen, nur vertrauenswürdige und mit überprüfbaren Zertifikaten ausgestattete Makros zuzulassen.
Zum Schutz vor Einsichtnahme kann der VBA-Code durch ein Kennwort geschützt werden. Dieser Schutz konnte in der Vergangenheit teilweise recht einfach ausgehebelt werden, z. B. durch Import in die äquivalente Anwendung des OpenOffice.org-Paketes.
Zahlreiche Websites und Newsgroups beschäftigen sich mit VBA. Durch seine Verbreitung gibt es eine Reihe von freien Programmsammlungen, Literatur und kommerziellen Angeboten. Da sich die Programme in eigenen Add-Ins kapseln lassen, können sie nach Bedarf zur Anwendung dazugeladen werden.
In industriellen Bereichen von Groß- und mittelständischen Unternehmen wird VBA häufig verwendet, um schnell kleinere IT-Lösungen zu realisieren. Wird die Schaffung einer sauberen und langfristig nutzbaren Programmierung angestrebt, ist allerdings Voraussetzung, dass die entwickelten Skripte/Makros und deren Struktur den Standards der Software-Entwicklung entsprechen. Aus diesem Grund ist es notwendig, VBA-Projekte genauso zu konzipieren wie andere Softwareprojekte und den sonst bei Makros üblichen Ad-hoc-Programmierstil zugunsten eines gut geplanten Softwareentwurfes abzulegen.
Dies ist oftmals nicht der Fall, denn VBA spricht auch Programmieranfänger an, und so ist es wahrscheinlich, dass irgendwann auch ein in Entwurfsfragen unerfahrener Programmierer ein Projekt weiterentwickelt. Zum anderen erschwert oder verhindert die mangelnde Unterstützung durch VBA auch für erfahrene Entwickler den Einsatz moderner Programmier- und Entwurfstechniken. Nach einiger Zeit entstehen in der Praxis deshalb häufig Systeme, die schlicht nicht mehr weiterentwickelt werden können, da ihre Struktur kaum durchschaubar ist.
Wikipedia: http://de.wikipedia.org/wiki/Visual_Basic_for_Applications