 |
Serienbriefe in Word von der Datenbank aus steuern
Ich möchte mit Hilfe einer Schaltfläche genau den Datensatz aus Access 97 mit einem Serienbrief in Word verbinden, den ich vorher ausgewählt habe. Das Starten von Word funktioniert problemlos. Ich schaffe es aber nicht, die Vorlage automatisch zu öffnen und den Datensatz in ein neues Textdokument einzufügen. Können Sie mir bei diesem Problem helfen?
Die Steuerung einer anderen Office-Anwendung durch Access 97 ist ein komplexes Thema. Deshalb sind einige Annahmen zu treffen:
Die an den Serienbrief zu übergebenden Daten liegen in einer Tabelle »Personen«, und der Nutzer kann mit Hilfe eines Formulars »Auswahl« einen speziellen Datensatz aussuchen. Dieses Formular enthält neben den Datenfeldern zusätzlich das ungebundene Textfeld »DokName«, das Sie dann später benötigen.
Zuerst müssen Sie in Ihrer Access-Datenbank eine neue Abfrage namens »Datenauswahl« erzeugen, auf die Word als Datenquelle für den Serienbrief zugreifen kann. Diese Abfrage basiert auf der Tabelle »Personen« und enthält alle von Word benötigten Felder. Zusätzlich müssen Sie unbedingt den Primärschlüssel der Tabelle – im Beispiel »PERSON« – in die Auswahl aufnehmen, da Sie nur anhand dieses Feldes einen Datensatz eindeutig identifizieren können. Tragen Sie nun unter den »Kriterien« des Primärschlüssels die Zeichenkette »[Formulare]![Auswahl]![PERSON]« ein. Die beschriebene Abfrage wählt dann genau den Datensatz der Tabelle »Personen« aus, den das Formular »Auswahl« aktuell auf dem Monitor anzeigt.
Als nächstes müssen Sie mit Word einen Serienbrief erzeugen, der sich auf diese Abfrage bezieht. Hier soll der entsprechende Serienbrief den Namen BRIEF.DOC tragen und im Ordner C:\TEST liegen. Nachdem das allgemeine Layout dieses Dokumentes gestaltet ist, können Sie die Datenquelle mit dem Menübefehl »Extras | Seriendruck« bestimmen, der den »Seriendruck-Manager« öffnet.
Im Bereich »Hauptdokument« geben Sie an, dass Word aus dem aktuellen Dokument einen Serienbrief erzeugen soll. Die Datenquelle dieses Serienbriefes definieren Sie anschließend im gleichnamigen Bereich. Verweisen Sie dabei auf die Abfrage »Datenauswahl« Ihrer Access-Anwendung. Klicken Sie abschließend auf die Schaltfläche »Hauptdokument bearbeiten«, um die Seriendruckfelder in Ihren Serienbrief zu integrieren. Hierzu nutzen Sie in der Symbolleiste »Seriendruck« die Schaltfläche »Seriendruckfeld einfügen«.
Zu guter Letzt müssen Sie im Access-Formular »Auswahl« eine Schaltfläche namens »WordStarten« hinzufügen, mit deren Hilfe der Anwender später die Textverarbeitung startet. Hinterlegen Sie den im Kasten abgedruckten VBA-Quelltext dem Ereignis »Beim Klicken« dieser Schaltfläche.
Außerdem ist es unbedingt notwendig, dass Sie im Visual-Basic-Editor mit dem Menübefehl »Extras | Verweise« einen Verweis auf die Objektbibliothek »Microsoft Word 8.0 Object Library« erzeugen.
Private Sub WordStarten_Click() On Error GoTo Err_WordStarten_Click
Dim WordObj As Object Dim myDocname As String
myDocname = Me!DokName
Set WordObj = CreateObject(äWord.Applicationô)
WordObj.Documents.Open äC:\Test\Brief.Docô WordObj.Visible = True
WordObj.Documents(äC:\Test\Brief.Docô).MailMerge.Destination = wdSendTot NewDocument WordObj.Documents(äC:\Test\Brief.Docô).MailMerge.Execute
WordObj.ActiveDocument.SaveAs FileName:=myDocname WordObj.Documents(äC:\Test\Brief.Docô).Close SaveChanges:=wdDoNotSaveChanges
Set WordObj = Nothing
Exit_WordStarten_Click: Exit Sub
Err_WordStarten_Click: MsgBox Err.Description Resume Exit_WordStarten_Click
End Sub
Wenn der Anwender nun auf die Schaltfläche »WordStarten« klickt, veranlasst Access die Textverarbeitung Word, den Serienbrief C:\TEST\ BRIEF.DOC zu öffnen, wobei als Datenquelle die Abfrage »Datenauswahl« Ihrer Access-Datenbank fungiert. Sofort gibt Word den Serienbrief in ein anderes Dokument aus, dessen Namen und Pfad Sie im ungebundenen Textfeld »DokName« bestimmen. Das Beispiel finden Sie auf der Heft-CD unter CHIP-Code: SERIENBR
|
 |