Das Thema Berichte und ihre Ausgabe in das PDF-Format beschäftigt Access-Entwickler seit Jahren. Zuletzt horchten die Entwickler auf, weil Microsoft die Integration eines solchen Exports als Feature von Office 2007 in Aussicht stellte. Da dies aber erstens nur als Extra-Tool kommt und zweitens nur mit Office 2007 funktioniert, stellen wir Ihnen ein kostenloses Tool zum Konvertieren von Berichten und Snapshots in PDF-Dokumente von Stephen Lebans vor.
PDF mit Umwegen
Genau genommen erstellt das Tool, das im Mit-telpunkt dieses Beitrags steht, nicht direkt ein PDF, sondern geht einen Umweg über das Snapshot-Format von Access-Berichten. Davon merkt der Anwender aber erstens nicht viel und zweitens kann man mit dem Tool auch aus Berichten, die bereits in das Snapshot-Format konvertiert wurden, noch PDF-Dokumente erstellen. Alles rund um das Snapshot-Format erfahren Sie übrigens in [1].
Download und Installation
Informationen und den Download des Tools finden Sie unter http://www.lebans.com/reporttopdf.htm. Der Download enthält zwei DLLs sowie eine Beispieldatenbank.
Die DLLs StrStorage.dll und DynaPDF.dll spei-chert man am besten im Verzeichnis c:\Windows\System32\. Sie können diese aber, wenn Sie keine Schreibrechte für dieses Verzeichnis besitzen, auch im gleichen Verzeichnis wie die Datenbank speichern. Die DLLs müssen nicht registriert werden; ebenso ist kein Verweis vom VBA-Projekt aus erforderlich.
Beispielexport
Anhand eines eigenen Beispielformulars zeigen wir Ihnen, wie Sie eigenen Datenbanken eine Funktion zum Exportieren von Berichten in PDF-Dateien hinzufügen können. Voraussetzung ist eine Datenbank mit zumindest einem Bericht, desweiteren macht ein Formular zur Steuerung des Vorgangs Sinn. Dieses sieht wie in Bild 1 aus.
Bild 1: Formular mit einer Funktion zum Exportieren von Berichten in das PDF-Format
Das Kombinationsfeld cboBerichte zeigt alle in der Datenbank enthaltenen Berichte und zusätzlich den Eintrag <Bitte auswählen> an, der beim öffnen des Formulars automatisch ausgewählt wird. Für die Anzeige der Berichtsliste sorgt die folgende Datenherkunft:
SELECT "<Bitte auswählen>" AS Name FROM MSysObjects UNION SELECT MSysObjects.Name FROM MSysObjects WHERE (((MSysObjects.Type)=-32764));
Die folgende Routine sorgt dafür, dass der Eintrag <Bitte auswählen> beim öffnen des Formulars voreingestellt wird:
Private Sub Form_Open(Cancel As Integer) Me!cboBerichte = Me!cboBerichte.ItemData(0) End Sub
Das Textfeld txtAusgabepfad erwartet die Angabe des Verzeichnisses und des Dateinamens der Zieldatei. Zur Vereinfachung befindet sich neben dem Textfeld eine Schaltfläche, die einen Dateiauswahldialog öffnet. Diese verwendet den in [2] vorgestellten Dateidialog.