Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
Nachdem wir bereits gezeigt haben, wie man COM-Add-Ins für die Verwendung in anderen Office-Anwendungen nutzen kann, wollen wir nun auch einmal eines für Word programmieren. Die Aufgabe lautet, die verschiedenen Funktionen, die wir im Artikel “Word: PDF per VBA erzeugen” definiert haben, in Word für alle Dokumente bereitzustellen. Dazu erstellen wir ein neues COM-Add-In mit der Entwicklungsumgebung twinBASIC. Das COM-Add-In soll seine Funktionen per Ribbon bereitstellen, sodass der Benutzer mit wenigen Mausklicks die gewünschten Exporte erzeugen kann. Dazu gehört der Export des vollständigen Dokuments, aller Seiten einzeln, eines bestimmten Bereichs, der aktuellen Seite oder auch von Bereichen, die durch bestimmte Formatierungen eingeleitet werden.
Im Artikel Word: PDF per VBA erzeugen (www.vbentwickler.de/384) haben wir einige Methoden gezeigt, wie wir den Inhalt von Word-Dokumenten in PDF-Dokumente exportieren können. Diese sehen wie folgt aus:
- Komplettes Dokument als PDF speichern
- Jede Seite als eigenes PDF-Dokument extrahieren
- Bereiche nach Seitenzahl exportieren
- Exportieren der aktuellen Seite
- Aufteilen nach Eigenschaften wie Überschriften
- Speichern des markierten Textes in ein eigenes PDF-Dokument
Diese Funktionen wollen wir nun in ein COM-Add-In integrieren, das die Funktionen für alle Dokumente in einem eigenen Tab im Ribbon anzeigt (siehe Bild 1). Hier sehen wir auch die Möglichkeit, die Seitenzahlen zum Exportieren eines Bereichs zu exportieren. Außerdem können wir angeben, ob das PDF nach dem Export direkt geöffnet werden soll.
Bild 1: Das Ribbon-Tab für die Exportfunktionen
Voraussetzungen
COM-Add-Ins wie dieses erstellen wir mit dem Tool twinBASIC, das für die Erstellung von 32-Bit-Anwendungen kostenlos verfügbar ist. Mehr dazu findest Du in Artikeln wie twinBASIC: Visual Basic für die Zukunft (www.vbentwickler.de/310) und COM-Add-Ins mit twinBASIC (www.vbentwickler.de/311).
Da dort die Basics zum Erstellen von COM-Add-Ins bereits ausführlich dokumentiert wurden, konzentrieren wir uns hier auf die für unseren Anwendungszweck spezifischen Teile der Programmierung.
Starten des COM-Add-Ins
Beim Starten des COM-Add-Ins wird die Methode OnConnection der Schnittstelle IDTExtentibility2 aufgerufen (siehe Listing 1).
Sub OnConnection(ByVal Application As Object, ByVal ConnectMode As ext_ConnectMode, ByVal AddInInst As Object, _ ByRef custom As Variant()) Implements IDTExtensibility2.OnConnection Set objWord = Application Set objWordEvents = Application End Sub
Listing 1: Diese Prozedur wird beim Starten von Word aufgerufen
Diese dient normalerweise dazu, einer Objektvariablen wie der folgenden einen Verweis auf die Anwendung hinzuzufügen, die das Add-In aufgerufen hat, in diesem Fall Word.Application. Diese landet in einem Standardmodul namens mdlWord.twin, weil wir von verschiedenen Modulen aus auf diese Variable zugreifen wollen:
Public objWord As Word.Application
Andererseits benötigen wir in diesem Fall aber auch die Möglichkeit, beim Öffnen eines neuen Dokuments oder beim Wechseln zu einem anderen Dokument auf das entsprechende Ereignis zu reagieren. Das ist notwendig, weil wir in die beiden Felder Erste Seite und Letzte Seite des Ribbons die erste und die letzte Seite des aktuellen Dokuments eintragen wollen. Dazu deklarieren wir also noch eine Variable namens objWordEvents, diesmal mit dem Schlüsselwort WithEvents: