Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 2/2011.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Verbessern Sie das Add-In aiuSeriendruck und erstellen Sie damit noch zuverlässiger Seriendokumente.

Techniken

Word, VBA

Voraussetzungen

Access 2000 und höher

Beispieldateien

aiuSeriendruck.mdb

Shortlink

www.access-im-unternehmen.de/767

Seriendruck mit Access und Word, Teil II

André Minhorst, Duisburg

Unser Beitrag zum Thema Ferngesteuerter Seriendruck mit Access und Word hat soviel Feedback geliefert, dass wir Ihnen einige Verbesserungen und Erweiterungen liefern möchten. Der vorliegende Beitrag zeigt, welche Schwachstellen das Add-In noch enthielt und wie Sie diese beheben.

Fehler 5922 - Word konnte die Datenquelle nicht öffnen

Dieser Fehler trat speziell unter Access 2010 auf, und zwar in der folgende Zeile der Prozedur cmdSerienbriefErstellen_Click:

objMerge.OpenDataSource Name:=dbc.Name,
LinkToSource:=True,
Connection:=strConnection,
SQLStatement:="SELECT * FROM [tblSerienbrief_Temp]
WHERE [Serienbrief] = True",
SubType:=1

Die Lösung war nicht einfach zu finden. Ein Tipp von Sascha Trowitzsch führte schließlich dazu, einmal den Makro-Editor unter Word zu starten und manuell einen Seriendruck auf Basis der betroffenen Tabelle der Add-In-Datenbank zu erstellen.

Fazit: Word kommt anscheinend nicht mit dem Datentyp .mda klar! Wenn Sie dort eine bestehende Datenquelle auswählen, müssen Sie Alle Dateien (*.*) als Filter festlegen, um überhaupt auf die .mda-Datei zugreifen zu können. Im nächsten Schritt zeigt sich dann, dass Word sich unter diesem Dateityp nichts vorstellen kann und beim Analysieren des Inhalts scheitert (s. Abb. 1).

pic001.png

Abb. 1: Versuch, Daten aus einer .mda-Datei als Quelle für einen Seriendruck zu verwenden

Ein kleiner Versuch brachte schließlich die Lösung dieses Problems: Der Dateiname wurde von .mda zurück in .mdb geändert und siehe da - Word liest die Daten problemlos ein. Die oben genannte und für den Fehler verantwortliche Zeile mit dem Aufruf der OpenDataSource-Methode funktioniert nun einwandfrei.

Allerdings lässt sich die .mdb-Datei nun nicht mehr direkt als Add-In installieren, da hier standardmäßig nur .mda- beziehungsweise .accdb-Dateien ausgewählt werden können. Das ist aber kein Problem, denn auch hier lässt sich der Filter auf alle Dateien einstellen.

Und zu guter Letzt müssen Sie noch die Tabelle USysRegInfo anpassen. Die Angabe der Library müssen Sie von aiuSeriendruck.mda auf aiuSeriendruck.mdb ändern, damit Access die umbenannte Datei weiterhin findet (s. Abb. 2).

pic002.png

Abb. 2: Anpassung der Tabelle USysRegInfo, damit Access das Add-In ordnungsgemäß starten kann

Kontextmenüeinträge bei mehreren Seriendrucken

Gelegentlich möchte man nicht nur ein, sondern mehrere verschiedene Dokumente im Seriendruck verarbeiten. Zum Hinzufügen der Platzhalter in Word hat aiuSeriendruck ja das Kontextmenü des Dokuments so angepasst, dass Sie alle Felder der Quelltabelle über die Auswahl eines Eintrags wie etwa [Vorname] einfügen können.

Leider behält das Kontextmenü diese Einträge bei, sodass das Kontextmenü mit jedem neuen Dokument länger wird. Die Lösung dieses Problems war ebenfalls nicht einfach zu finden. Eigentlich konnte man davon ausgehen, dass es reicht, beim Erstellen der Kontextmenüeinträge mit der Add-Methode den Temporary-Parameter auf True einzustellen. Dies würde bedeuten, dass die angelegten Einträge beim Schließen von Word wieder gelöscht würden:

Set cbc = m_Commandbar.Controls.Add(1, , , , True)

Aber dies reichte aus unerfindlichen Gründen nicht. Also griff ich zu weiteren Maßnahmen: Alle neu angelegten Kontextmenüeinträge wurden mit einem Wert für die Tag-Eigenschaft versehen, der das Tilde-Zeichen und die Beschriftung des Kontextmenüeintrags enthielt, also beispielsweise ~[Vorname]. Dies alles mit dem Zweck, eventuell verbleibende Einträge vor dem erneuten Anlegen des Kontextmenüs mit der Delete-Methode in einer Schleife über alle Einträge er jeweiligen Kontextmenüeinträge wieder zu löschen. Auch das brachte nicht die geringste Änderung!

Die Lösung fand sich schließlich in Word selbst: Wenn Sie bei geöffnetem Word-Dokument Elemente zur CommandBars-Auflistung hinzufügen und das Dokument dann speichern, werden diese Elemente mit dem Dokument gespeichert.

Das Speichern des Dokuments tritt in aiuSeriendruck auf, wenn der Benutzer den letzten Kontextmenüeintrag mit der Beschriftung Alle Platzhalter gesetzt anklickt. Dies löst eine entsprechende Ereignisprozedur aus, die um zwei Anweisungen ergänzt werden muss - und zwar um den Aufruf der Methode Reset für die beiden um temporäre Einträge erweiterten Kontextmenüs. Reset setzt die Kontextmenüs wieder so zurück, dass diese nur noch eingebaute Elemente enthalten (s. Listing 1).

Listing 1: Speichern des um Platzhalter ergänzten Dokuments und vorheriges Zurücksetzen der Kontextmenüs

Private Sub m_cbc_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)

    Select Case Ctrl.Caption

    Case "Alle Platzhalter gesetzt"

    On Error Resume Next

    m_Document.CommandBars("Text").Reset

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.