Automatisieren von Word mit Visual Basic zum Erstellen eines Seriendrucks

Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
285332 How to automate Word with Visual Basic to create a Mail Merge

Zusammenfassung

Dieser Artikel beschreibt, wie Sie Word automatisieren, um einen Seriendruck für eine externe Datenquelle zu erstellen. Außerdem werden die Codeunterschiede erklärt, die beim Zugriff auf die Daten mittels OLEDB, ODBC und Dynamic Data Exchange (DDE) bestehen.

Weitere Informationen

Datenzugriffsmethoden

Wenn Sie eine Datenquelle für ein Word-Serienbriefdokument programmatisch einrichten möchten, rufen Sie zunächst die Methode OpenDataSource eines MailMerge-Objekts auf. Die Syntax der Methode OpenDataSource lautet wie folgt:
<MailMergeObject>.OpenDataSource(Name, [Format], [ConfirmConversions], [ReadOnly], [LinkToSource], [AddToRecentFiles], [PasswordDocument], [PasswordTemplate], [Revert],[WritePasswordDocument], [WritePasswordTemplate], [Connection], [SQLStatement], [SQLStatement1], [OpenExclusive], [SubType])
Hinweis: Eine vollständige Beschreibung der einzelnen Argumente finden Sie in der Onlinehilfe für Microsoft Word Visual Basic. Von primärem Interesse für die Verbindung mit einer externen Datenquelle sind die Argumente Name, Connection und SubType. Aus unterschiedlichen Kombinationen dieser drei Argumente ergeben sich unterschiedliche Datenzugriffsmethoden für den Seriendruck.

Verwenden von OLEDB

OLEDB ist die empfohlene Datenzugriffsmethode. Wenn Sie OLEDB als Datenzugriffsmethode mit OpenDataSource definieren möchten, übergeben Sie als Argument Name den Pfad und Dateinamen zu einer Datenbank oder einer ODC-Datei (ODC = Office DataSource Connection). Wenn Sie für das Argument Name eine Datenbank angeben, verwendet Word automatisch OLEDB, wenn ein OLEDB-Anbieter installiert ist, der das Datenbankformat unterstützt.

Beispiel
 <MailMergeObject>.OpenDataSource Name:="C:\MyDB.mdb", _            SQLStatement:="SELECT * FROM [MyTable]" 
-oder-
 <MailMergeObject>.OpenDataSource Name:="C:\MyDataSource.odc", _            SQLStatement:="SELECT * FROM [MyTable]" 
Word und andere Office XP-Anwendungen verwenden ODSO (Office DataSource Object) für den OLEDB-Zugriff auf externe Datenquellen. ODSO ist der einzige Mechanismus, über den Word mittels OLEDB auf Daten für einen Seriendruck zugreifen kann. Bei Verwendung von ODSO muss das Argument Name für OpenDataSource ein vollständiger Pfad zu einer Datenbank oder zu einer gültigen ODC-Datei sein. Informationen im Argument Connection werden ignoriert.

Verwenden von ODBC

Sie können ODBC für Ihren Seriendruck verwenden, um auf Daten zuzugreifen, für die ein Benutzer-Datenquellenname (Data Source Name, DSN) auf dem System eingerichtet wurde. Wenn Sie ODBC als Datenzugriffsmethode mit OpenDataSource definieren möchten, übergeben Sie eine leere Zeichenfolge als Argument Name, eine ODBC-Verbindungszeichenfolge als Argument Connection und wdMergeSubTypeWord2000 als Argument SubType.

Beispiel
<MailMergeObject>.OpenDataSource Name:= "", _
Connection:= "DSN=MySQLServerDSN;DATABASE=pubs;uid=sa;pwd=;", _
SQLStatement:= "Select au_id, au_lname, au_fname from authors", _
SubType:= wdMergeSubTypeWord2000

Verwenden von DDE

Sie können DDE verwenden, um auf Daten in Microsoft Access-Datenbanken oder Microsoft Excel-Arbeitsmappen zuzugreifen. Wenn Sie DDE als Datenzugriffsmethode mit OpenDataSource definieren möchten, übergeben Sie den Pfad und Dateinamen der Datenbank oder der Arbeitsmappe als Argument Name und wdMergeSubTypeWord2000 als Argument SubType.

Beispiel
<MailMergeObject>.OpenDataSource Name:="C:\MyDB.mdb", _
SQLStatement:="SELECT * FROM [MyTable]", _
SubType:=wdMergeSubTypeWord2000

Beispiel für Automatisierung

Der folgende Beispielcode dient zum Erstellen und Ausführen eines Seriendrucks für Serienbriefe mithilfe von OLEDB (über ODSO). Als Datenquelle dient die Access-Beispieldatenbank "Nordwind.mdb". Wenn Nordwind nicht installiert ist, starten Sie Microsoft Access 2002 oder Microsoft Office Access 2003. Klicken Sie im Menü ? auf Beispieldatenbanken, und wählen Sie Beispieldatenbank Nordwind aus, um dieses Feature zu installieren.

Gehen Sie folgendermaßen vor, um dieses Beispiel auszuführen:
  1. Starten Sie in Visual Basic ein neues Standard-EXE-Projekt. Standardmäßig wird jetzt Form1 erstellt.
  2. Klicken Sie im Menü Projekt auf Verweise.
  3. Klicken Sie in der Liste der Verweise auf den Eintrag Microsoft Word 2000 Object Library, und klicken Sie auf OK.

    Hinweis: Wenn Sie das Microsoft Office Word 2003-Objekt verwenden möchten, fügen Sie die Microsoft Word 11.0 Object Library zu der Liste mit Verweisen hinzu, und klicken Sie auf OK.
  4. Fügen Sie ein CommandButton-Steuerelement (Befehlsschaltfläche) zu Form1 hinzu.
  5. Fügen Sie dem Codemodul für Form1 den folgenden Code hinzu.

    Hinweis: Ändern Sie ggf. den Pfad zur Datei "Nordwind.mdb", damit er Ihrer Office XP-Installation entspricht.
    Dim WithEvents oApp As Word.Application

    Private Sub Form_Load()
    'Start Word.
    Set oApp = CreateObject("Word.Application")
    End Sub

    Private Sub Command1_Click()

    Dim oMainDoc As Word.Document
    Dim oSel As Word.Selection
    Dim sDBPath as String

    'Start a new main document for the mail merge.
    Set oMainDoc = oApp.Documents.Add

    With oMainDoc.MailMerge

    .MainDocumentType = wdFormLetters

    'Set up the mail merge data source to Northwind.mdb.
    sDBPath = "C:\Program Files\Microsoft Office\" & _
    "OfficeXP\Samples\Northwind.mdb"
    .OpenDataSource Name:=sDBPath, _
    SQLStatement:="SELECT * FROM [Customers]"

    'Add the field codes to the document to create the form letter.
    With .Fields
    Set oSel = oApp.Selection
    .Add oSel.Range, "CompanyName"
    oSel.TypeParagraph
    .Add oSel.Range, "Address"
    oSel.TypeParagraph
    .Add oSel.Range, "City"
    oSel.TypeText ", "
    .Add oSel.Range, "Country"
    oSel.TypeParagraph
    oSel.TypeParagraph
    oSel.TypeText "Dear "
    .Add oSel.Range, "ContactName"
    oSel.TypeText ","
    oSel.TypeParagraph
    oSel.TypeParagraph
    oSel.TypeText " This letter is to inform you..."
    oSel.TypeParagraph
    oSel.TypeParagraph
    oSel.TypeText "Sincerely, [Your Name Here]"
    End With
    End With

    'Perform the mail merge to a new document.
    With oMainDoc
    .MailMerge.Destination = wdSendToNewDocument
    .MailMerge.Execute Pause:=False
    End With

    End Sub

    Private Sub oApp_MailMergeAfterMerge(ByVal Doc As Word.Document, ByVal DocResult As Word.Document)

    'When the mail merge is complete, 1) make Word visible,
    '2) close the mail merge document leaving only the resulting document
    'open and 3) display a message.
    Doc.Close False
    oApp.Visible = True
    MsgBox "Mail Merge Complete: " & oApp.ActiveDocument.Name

    End Sub

    Private Sub Form_Unload(Cancel As Integer)
    Set oApp = Nothing
    End Sub
  6. Drücken Sie [F5], um das Programm auszuführen.
  7. Klicken Sie auf das CommandButton-Steuerelement auf Form1, um den Seriendruck auszuführen.
Wenn der Code abgeschlossen ist, wird Word mit einem neuen geöffneten Dokument angezeigt. Das neue Dokument enthält Serienbriefe aus einem Seriendruck mit Daten, die aus der Tabelle "Kunden" in der Datenbank "Nordwind.mdb" extrahiert wurden.

Informationsquellen

Weitere Informationen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:

289830 Fordern Sie auf, Tabelle mit Word 2002 Mail Merge Code für Excel oder Zugriffsdatenquelle auszuwählen
279462 PRB: Aufforderung zum Auswählen einer Datenquelle beim Automatisieren von Word 2002-Seriendruck
285333 Word 2002 MailMerge Ereigniscodedemo
285176 SO WIRD'S GEMACHT: Automatisieren von Word zur Ausführung eines Seriendrucks mithilfe von SQL Server
220607 Kann Microsoft Word wie automatisieren, um Seriendruck in Visual Basic durchzuführen
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Eigenschaften

Artikelnummer: 285332 – Letzte Überarbeitung: 11.03.2008 – Revision: 1

Feedback