In der Office Entwicklung ist VBA eines der häufiger vorkommenden Dinge. Viel alter Code ist bereits vorhanden und muss gewartet werden. Oft ist die Umstellung auf .Net deshalb mit sehr viel Mühen und Kosten verbunden. Jedoch gibt es auch die Möglichkeit, VBA Code in VSTO und somit .Net zu verwenden. In diesem Eintrag will ich mal die Execute-Methode vorstellen, welche auf VBA Code zugreift. Somit kann man beide Welten verwenden: Alten VBA Code ausführen, von dem man weiß dass dieser läuft und neue Klassen und Objektorientierung in der Office Entwicklung einführen.
Dieses Beispiel greift auf einem VBA Makro aus einem Xlsm (Macro Enabled Excel Workbook) zu. Der Zugriff sollte auch über eine neue Technologie, nämlich dem Ribbon, funktionieren. Hierfür wird ein neues Projekt mit einem Ribbon erstellt. Ferner wird die Xlsm Datei benötigt. Diese soll einen Makro enthalten.
1. Schritt: Makro erstellen
In der Xlsm Datei wird ein neuer Makro erstellt. Im Modul "Module1" wird eine neue "add()" Funktion hinzugefügt. Dort könnte beliebiger Code stehen. Im aktuellen Fall ist es jedoch "nur" eine MsgBox, die "Hello from VBA" ausgibt.
2. Schritt: Makro von VSTO aus starten
Auch dies ist sehr einfach - versprochen. Hierfür benötigt man lediglich den Run Aufruf. Das einzige Problem dürfte für C#-Entwickler entstehen, da für die Übergabeparameter alles als optionale Parameter übergeben wird. Dies bedeutet das der Methodenaufruf 31 Parameter hat, wovon wir jedoch nur 1 benötigen - und 30 mal "System.Type.Missing" angeben.
Das ganze funktioniert durch einen Klick auf den Ribbon Button:
private void button1_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.Application.Run("Interop.xlsm!Module1.add", System.Type.Missing, System.Type.Missing, System.Type.Missing,
System.Type.Missing, System.Type.Missing, System.Type.Missing,
System.Type.Missing, System.Type.Missing, System.Type.Missing,
System.Type.Missing, System.Type.Missing, System.Type.Missing,
System.Type.Missing, System.Type.Missing, System.Type.Missing,
System.Type.Missing, System.Type.Missing, System.Type.Missing,
System.Type.Missing, System.Type.Missing, System.Type.Missing,
System.Type.Missing, System.Type.Missing, System.Type.Missing,
System.Type.Missing, System.Type.Missing, System.Type.Missing,
System.Type.Missing, System.Type.Missing, System.Type.Missing);
}War doch einfach, nicht wahr?
In Leipzig findet dieses Jahr eine Konferenz statt, welche ein sehr interessantes Konzept verfolgt: Sprecher sind gleichzeitig auch Vortragende, es gibt keine Rollenverteilung und keine "Chefs". Das Level der Kommunikation ist auf Erfahrungsaustausch der Teilnehmer ausgelegt und die Grundlage dessen ist ein "Du", wie bei einem Kaffe.
Die derzeitigen Themenschwerpunkte sind:
- ALT.Net
- Mobile Computing
- Soft Skills
Ferner gibt es auch keine Agende - diese wird nämlich von den Teilnehmern bestimmt, je nachdem was am interessantesten erscheint. Die Organisation der Konferenz wird auch von den Teilnehmern selbst durchgeführt.
Ich selbst bin zwar nicht so sehr in Mobile Computing involviert, jedoch bieten sich hier auch einige sehr interessante Ansätze - so gibt es ja Silverlight Mobile ;) - kurzum: ich werde auf dieser Konferenz bestimmt anzutreffen sein.
Link: http://netopenspace.de/MainPage.ashx
Das Silverlight-Magazin ist seit heute Live. Hier gibt es Artikeln, Blogs, Foren und Screencasts rund um das Thema Silverlight.
Als Highlight der Seite gibt es derweil 1,5 Stunden Screencasts, welche einen Einstieg in das Thema der Silverlight-Entwicklung gibt.
Der Content der Seite wird schrittweise erweitert. Hierbei wird auch auf einen guten Dialog mit der Community gehofft. Daraus sollte dann auch weiter Content generiert werden.
Über euren Input in das Thema würde ich mich sehr freuen.
Link: www.silverlight-magazin.de
- Mario