Visual Basic for Applications
aus Wikipedia, der freien Enzyklopädie
Visual Basic for Applications (VBA) von Microsoft ist eine aus dem von Microsoft entwickelten Basic-Dialekt Visual Basic (VB) abgeleitete Skriptsprache, die zur Steuerung von Programmabläufen in den Microsoft Office-Programmen entwickelt wurde. VBA ist damit der Nachfolger der verschiedenen Makro-Sprachen in den MS-Office-Anwendungen.
Inhaltsverzeichnis |
[Bearbeiten] Verfügbarkeit
Derzeit (Stand 2006) ist VBA 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, ARIS, MindManager und vielen anderen Anwendungen eingesetzt.
[Bearbeiten] Sprache
VBA ist eine sehr leistungsfähige Skriptsprache und fast immer die erste Wahl, wenn man Microsoft-Office-Anwendungen (Excel, Word, Access) programmieren will. VBA ist eine interpretierte Programmiersprache, deren Syntax größtenteils mit Visual Basic identisch ist, jedoch ist VBA gegenüber Visual Basic in seinen Funktionen und in der Leistungsfähigkeit seiner Entwicklungsumgebung 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.
Neben der Unterstützung der für Basic typischen, überkommenen Ablaufsteuerung mit Zeilenmarken und GOTO-Anweisungen (jargonhaft auch als Spaghetti-Code bezeichnet) ist VBA vor allem für prozedurale Programmierung konzipiert. Klassen und Objekte können zwar syntaktisch dargestellt werden, jedoch werden (außer der Datenkapselung) keine objektorientierten Konzepte wie Vererbung oder Laufzeitpolymorphie unterstützt, so dass VBA nicht zu den objektorientierten Programmiersprachen gerechnet werden kann.
Traditionell werden viele Syntaxkonstrukte aus früheren Basic-Dialekten noch unterstützt, was bisweilen zu verwirrender Syntaxvielfalt führt: Zuweisungen können mit oder auch ohne das Schlüsselwort Let erfolgen, wenn es sich um primitive Typen handelt, bei benutzerdefinierten Typen ist jedoch die Verwendung des Schlüsselwortes Set obligatorisch. Bei Unterprogrammen wird zwischen Sub (kein Rückgabewert) und Function (mit Rückgabewert) unterschieden. Beide können mit und ohne das Schlüsselwort Call aufgerufen werden, abhängig davon müssen die Argumente in Klammern gesetzt werden, alle vier Syntaxvarianten können sowohl mit als auch ohne benannte Argumente auftreten.
Die Sprache VBA ist weit verbreitet und stellt einen proprietären Industriestandard dar, eine Normung ist jedoch bislang nicht erfolgt.
Der Zugriff auf das jeweilige Wirtsprogramm erfolgt über eine meist gut dokumentierte Programmierschnittstelle. Als eines der wichtigsten Elemente steht in den jeweiligen Anwendungen neben dem VBA-Kern (Kontrollstrukturen, Datentypen, mathematische Funktionen, Dateisystem) das Application-Objekt zur Verfügung, welches Zugriff auf die Anwendung gewährt, in der VBA gerade läuft. Mit Methoden wie CreateObject() oder dem Erstellen von Referenzen können auch andere Office-Anwendungen oder Objekte fremder Programme benutzt werden.
[Bearbeiten] Kompatibilität zu VB.NET
Bis zur Visual Basic Version 6.0 ist es problemlos möglich, Module und Formulare zwischen VBA und VB auszutauschen. Seit der Umstellung auf das .NET-Framework ist es nicht mehr möglich, Dateien direkt auszutauschen, da sich das Dateiformat geändert hat. Module (also Quelltext-Dateien) können durch Umbenennung und Anpassung an die .NET-Datenstrukturen überführt werden. Formulare hingegen müssen komplett neu erstellt werden. Allerdings gibt es die Möglichkeit in VisualStudio.NET mit den VSTO (VisualStudioTools for Office) AddIns für das MS-Office zu entwickeln, die die gleichen Aufgaben übernehmen können, wie klassische Makros.
Es bestehen Überlegungen, VBA langfristig durch eine .NET-basierte Technik zu ersetzen.
[Bearbeiten] Sicherheit
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 VBA lediglich im Nachhinein Methoden zur Absicherung der Programmausführung wie etwa eine Prüfungsmöglichkeit eventuell vorhandener Makrozertifizierung zur Verfügung.
Als Folge davon kann selbst von Personen geringen Kenntnisstandes Schadcode (sog. Makroviren) mit – bei entsprechend sorgloser Handhabung durch arglose Benutzer – nahezu beliebig großer Schadwirkung (Keylogger oder andere Spyware zu Datenspionage oder Betrugszwecken, Dialerbetrug, Spam, Zerstörung der Installation) erstellt werden.
Um trotz der sicherheitstechnischen Mängel von VBA Betriebs- und Datensicherheit des Computersystems aufrecht zu erhalten, ist es höchst empfehlenswert, bei Installation eines Programmes, das VBA-Makros ausführen könnte, auch einen guten Virenscanner mit ausgereifter Makro-Schutzfunktion anzuschaffen, keinesfalls aus unbekannter Quelle stammende Dokumente zu öffnen, makrofähige Dokumente nicht unter dem Benutzerkonto des Systemadministrators zu öffnen und möglichst nur die Ausführungen von mit überprüfbaren Zertifikaten ausgestatteten Makros zuzulassen.
Zum Schutz vor Einsichtnahme kann der VBA-Code durch ein Passwort 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.
[Bearbeiten] Verbreitung
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 ist VBA das Mittel schlechthin, um schnell und effizient kleinere IT-Lösungen zu realisieren. Wird die Schaffung einer sauberen und langfristig nutzbaren Programmierung angestrebt, ist allerdings Voraussetzung, dass die entwickelten Scripte/Makros und deren Struktur den Standards der Software-Entwicklung entsprechen. Aus diesem Grund ist es zwingend notwendig, VBA-Projekte genauso zu konzipieren, wie andere Softwareprojekte und den sonst bei Makros üblichen "Ad-hoc" Programmierstil zugungsten eines gut geplanten Softwareentwurfes abzulegen.
Dies ist oftmals nicht der Fall, denn VBA spricht gezielt Programmieranfänger an, und so ist es wahrscheinlich, dass irgendwann auch ein in Entwurfsfragen unerfahrener Programmierer am 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 leider allzuoft Systeme, die schlicht nicht mehr weiterentwickelt werden können, da ihre Struktur einem undurchsichtigen Dickicht gleicht, und die so den langfristigen Totalverlust aller zur Entwicklung eingesetzten Mittel bedeuten können.
[Bearbeiten] Vorteile
- schnelle, effiziente Erstellung von Makros zur Automatisierung von Alltagstätigkeiten bis hin zu kleinen IT-Lösungen
- weitgehende, syntaktische Einfachheit
- große Ähnlichkeiten mit alten BASIC-Dialekten und VB.
- mit Microsoft Office sehr weit verbreitet
- deshalb als Schlüsselqualifikation im IT-Bereich anzusehen
- gute Unterstützung durch Internet-Communities
- gute Dokumentation
- Leistungsfähige API
- objektbasierende Ansätze
[Bearbeiten] Nachteile
- mangelhaftes Sicherheitskonzept, hohes Risiko für Installationszerstörung und Datenspionage, externer Virenscanner erforderlich.
- keine Unterstützung für Objektorientierung, Schwerpunkt auf traditioneller, prozeduraler Programmierung.
- hohes Investitionsrisiko bei mittleren bis großen Softwareprojekten.
- mangelnde syntaktische Konsistenz
- relativ zu kompilierten Programmen geringe Performance und hoher Speicherbedarf
- fehlende Normung
- API nicht zu anderen Office-Paketen kompatibel
- mögliche, langfristige Ablösung durch .NET-techniken.
- geringe / keine Portabilität (an Microsoft Windows gebunden).
- Scrollrad funktioniert im Editor nicht --> mit dem Tool FreeWheel aber möglich
[Bearbeiten] Siehe auch
- Visual Basic, VB
- Visual Basic Script, VBS
- StarOffice Basic
- BASIC
[Bearbeiten] Weblinks
- VBA-Seite von Microsoft
- Word-VBA Zyklus
- Samples und Vorlagen für VB(A)-Programme
- www.ArsTechnica.de: 79 VBA Beispielskripte für Excel, Access und Word
- www.vb-fun.de