Wie Ihnen sicherlich bekannt ist, können mit VBA sehr komplexe Anwendungen entwickelt werden, die Prozesse in Unternehmen optimieren und vereinfachen. Dennoch stößt VBA langsam an seine Grenzen und wird sicherlich in Zukunft aus den Office Anwendungen verschwinden. Ein großes Manko von VBA Anwendungen sind beispielsweise der einfach auszuhebelnde Schutz des Quellcodes oder die fehlenden modernen Werkzeuge zur Quellcode-Verwaltung und Speicherverwaltung. Mit VSTO – Visual Studio Tools for Office – stellt Microsoft spezielle Vorlagen und Schnittstellen in Visual Studio zur Verfügung, die es ermöglichen Office Anwendungen auf Basis von .NET zu entwicklen. Heißt, die komplette Power der .NET Bibliotheken steht dann zur Verfügung. Und, ein wichtiger Aspekt, der Code wird „verwaltet“, was wiederum eine erhöhte Sicherheit bedeutet, denn jede Codezeile wird vor Ausführung auf Ihre Berechtigungen überprüft.
Mit VSTO lassen sich einerseits dokumentzentrierte Lösungen erstellen und anderseits anwendungsbasierte Lösungen erstellen. Erstere stellen Zusatzfunktionen auf Basis einen Excel oder Word Dokumentes bereits, zweiteres auf Anwendungsebene, also zum Beispiel Add-Ins. VSTO setzt Visual Studio voraus, mittlerweile ist VSTO in der Version 3.0 verfügbar.
Auch ich beschäftige mich schon seit einiger Zeit eher spielerisch mit den neuen Möglichkeiten. Mein Ziel ist logischerweise hierbei, meine Anwendungen in naher Zukunft möglichst effektiv in einem überschaubaren Zeitraum portieren zu können. Sicherlich werde ich nicht herumkommen einen Teil des Codes neu zu schreiben, bei über 50.000 Zeilen für manche Anwendungen sicherlich nicht in einigen Tagen zu erledigen. Deshalb habe ich mich umgeschaut, ob es Möglichkeiten gibt diesen Prozess etwas zu vereinfachen und bin auf das Produkt der Firma „Add-In Express“ gestoßen.
Das Unternehmen mit Sitz in Belarus bietet einige Zusatzprodukte für Visual Studio an, unter anderem:
» | Add-in Express 2009 for Microsoft Office and .NET |
Eine Suite, um Erweiterungen für MS Office zu entwickeln. Das Produkt enthält visuelle Designer, um beispielsweise Ribbons oder Toolbars zu erstellen. Unterstützt werden alle Office Versionen von Office 2000 bis Office 2007. Es können VSTO COM Add-Ins, Smart Tags, XLL’s oder benutzerdefinierte Excel Funktionen mit der Suite entwickelt werden. | |
» | Add-in Express 2009 for Microsoft Office and VSTO |
Eine etwas abgespecktere Version von “Add-in Express 2009 for Microsoft Office and .NET”, welche VSTO basierte COM-Add-Ins generiert und nur Office 2003 und Office 2007 unterstützt. | |
» | Spezialisierte Versionen |
Das Unternehmen bietet auch auf Outlook oder auf den Internet Explorer spezialisierte Bibliotheken an. Zudem ist auch eine Version für Delphi verfügbar. |
In meinem Fall erschien mir das Produkt „Add-in Express 2009 for Microsoft Office and .NET“ am interessantesten. In diesem Beitrag werde ich die Installation des Produktes beschreiben und mein erstes COM Add-In für Excel mit dem Produkt generieren sowie ein Ribbon für Office 2007 anlegen. In weiteren Beiträgen werde ich über weitere Erfahrungen mit dem Produkt berichten und eine meiner einfachen VBA Anwendungen portieren. Getestet habe ich das Produkt in Visual Studio 2008 Team System.
Zunächst habe ich das aktuelle Produkt heruntergeladen, mich auf der Website registriert und einen Produktschlüssel heruntergeladen. Leider ist momentan ist das Produkt nur in Englisch verfügbar, die Dokumentation, die auf der Website des Unternehmens einsehbar ist, ist jedoch relativ leicht verständlich. Das Installationsprogramm begrüßt mich mit folgendem Screen:
Nach einem Klick auf „Next“, werde ich aufgefordert, die Lizenzbestimmungen zu akzeptieren und gelangen anschließend zu einem Auswahldialog für meine Visual Studio Edition:
Im nächsten Schritt erhalte ich die Möglichkeit, ein Verzeichnis auszuwählen und werde abschließend explizit zur Installation aufgefordert:
Nach der Installation ist noch eine Aktivierung des Produktes notwendig, hierbei ist zu beachten, dass diese Anwendung auch Zugang zum Internet erhält und insofern einer Firewall dies mitgeteilt werden sollte.
Nun wird’s spannend, was passiert wenn ich Visual Studio aufrufe? Hmm, erstmal gar nichts. Auch im „Extras“ Menü ist kein Eintrag oder ähnliches zu finden, welches auf das Produkt hinweist. Ein Blick in das mitgelieferte PDF (zu finden in einer neuen Programmgruppe, welches das Installationsprogramm angelegt hat) enthält Anleitungen für diverse Projekttypen.
Fangen wir also an, indem wir ein neues Projekt anlegen. Add-In Express legt neue Vorlagen an, die allerdings nicht im Unterbaum „Visual Basic – Office“ zu finden sind, sondern unter „Andere Projekttypen – Erweiterungen“. Hier finden Sie die neuen Einträge „ADX COM Add-in“, „ADX RTD Server“, „ADX Smart Tag“ und „ADX XLL Add-In“. Ich entscheide mich für das COM Add-in.
Ich werde nun aufgefordert, zunächst weitere Optionen zum Projekt anzugeben:
Ich fühle mich in Visual Basic etwas wohler, deshalb ändere ich die Voreinstellung von C# zu VB. Ein Setup-Projekt lasse ich auch generieren und die anderen Optionen belasse ich in ihrer Voreinstellung. Im nächsten Schritt des Assistenten gilt es nun die Office Produkt zu wählen, die das COM Add-In ansprechen soll. Für den ersten Test wähle ich Excel aus.
Die Option „Use version-neutral interop assemblies“ lasse ich aktiviert, denn ich möchte sowohl neuere Version von Excel (2007) als auch ältere (2000-2003) mit dem Add-In ansprechen können. Das Signieren der Anwendung kann, denke ich, nicht schaden. Nach einem Klick auf „Finish“ wird das Projekt angelegt, die Abhängigkeiten definiert und Voreinstellungen getroffen.
Schauen wir uns den Code in AddinModule.vb näher an. Dieser enthält, neben spezifischen automatisch generierten Methoden und Eigenschaften, auch die Eigenschaft ExcelApp(), die uns ermöglichen wird, auf die Excel Instanz zuzugreifen.
Für den Fall, dass Sie zum Beispiel im hier zuvor abgebildeten Assistenten auch „Word“ ausgewählt hätten, wäre im Code ein zusätzliche Funktion WordApp() eingefügt worden.
Um eine Komponente des Produktes hinzufügen zu können, müssen wir zunächst die Design-Ansicht des Moduls öffnen. Anschließend erhalten wir über einen Rechtsklick ein Kontextmenü aus welchem wir ein passendes Steuerelement auswählen können.
Wählen wir “Add Ribbon Tab”, legt sich das Element in unsere Design-Ansicht hinein und wir können im Eigenschaftsfenster über „Controls“ neue Ribbons anlegen.
Es öffnet sich im Anschluß der Ribbon-Designer, in welchem wir ganz komfortabel Elemente anlegen können, wie im folgenden Screenshot zu sehen:
Über das Kontextmenü können Gruppen, Buttons, Checkboxen und viele weitere Steuerelemente eingefügt werden, rechts im Fenster lassen sich z.B. der Codename, Titel und weitere vielfältige Einstellungen treffen. In dieser Ansicht hatte ich zum späteren Testen eine Schaltfläche hinzugefügt. Damit diese auch Code ausführt muss ich noch zur Codeansicht wechseln und ein Klick-Ereignis hinzufügen. Wie in VBA gewohnt sind im Codefenster im oberen Bereich Listen zur Auswahl des Steuerelementes und Ereignisses vorhanden. Ich werde die Schaltfläche ein „Hallo“ über eine MsgBox ausgeben lassen.
Schauen wir mal, wie das jetzt in Office 2007 aussieht. Hierzu kompiliere ich zunächst das Add-In und registriere es über den Hauptmenüpunkt „Erstellen – Register ADX Project“. Bin gespannt, nun einmal Excel 2007 starten und siehe da, das Add-In steht inklusive dem Ribbon sofort zur Verfügung.
Sehr schön, die MsgBox funktioniert auch. Aber funktioniert das Add-In auch in Excel 2003? Da ja Excel 2003 keine Ribbons kennt, erstellen wir mit demselben Verfahren (Rechtsklick in der Designer Ansicht) eine neue Symbolleiste und fügen dieser ein paar Einträge hinzu.
Einmal kompilieren und neu registrieren, sowie Excel 2003 starten. Wie Sie hier unten sehen können hat sich das Add-In reibungslos auch in Excel 2003 integriert.
Zum Abschluß dieses ersten Beitrages, ich stehe zwar noch ganz am Anfang beim Erforschen dieses Produktes, das Potenzial und Möglichkeiten sind jedoch bereits jetzt erkennbar. Eine Frage, die sich sicherlich noch einige stellen werden, ist der Preis einer Lizenz. Dieser variiert je nach Lizenzmodell (Standard, Professional, Premium) zwischen ca. 350,- und 950,- US Dollar. Verglichen mit anderen Produkten ist dies verhältnismäßig günstig. Zudem bietet das Unternehmen des öfteren Sonderangebote zu den Produkten an.