Word automatiseren met Visual Basic voor het maken van afdruk samenvoegen

Samenvatting

In dit artikel wordt beschreven hoe u Word automatiseert voor het maken van een samenvoegbewerking voor een externe gegevensbron. In dit artikel worden ook de codeverschillen tussen toegang tot de gegevens met OLEDB, ODBC en dynamische gegevensuitwisseling (DDE) uitgelegd.

Meer informatie

Methoden voor gegevenstoegang

Als u programmatisch een gegevensbron wilt instellen voor een Word-samenvoegdocument, roept u eerst de OpenDataSource-methode van een MailMerge-object aan. De syntaxis voor de methode OpenDataSource is als volgt:

<MailMergeObject>.OpenDataSource(Name, [Format], [ConfirmConversions], [ReadOnly], [LinkToSource], [AddToRecentFiles], [PasswordDocument], [PasswordTemplate], [Revert],[WritePasswordDocument], [WritePasswordTemplate], [Connection], [SQLStatement], [SQLStatement1], [OpenExclusive], [SubType]) 

Opmerking

Raadpleeg de online Help van Microsoft Word Visual Basic voor een volledige beschrijving van elk argument. De argumenten Name, Connection en SubType zijn van belang voor het maken van verbinding met een externe gegevensbron. Verschillende combinaties van deze drie argumenten vertegenwoordigen verschillende methoden voor gegevenstoegang voor de samenvoegbewerking.

OLEDB gebruiken

OLEDB is de aanbevolen methode voor gegevenstoegang. Als u OLEDB wilt opgeven als de methode voor gegevenstoegang met OpenDataSource, geeft u het argument Naam met het pad en de bestandsnaam op voor de database of een Office DataSource-verbinding (.odc). Als u een database opgeeft voor het argument Naam, wordt oledb automatisch gebruikt als er een OLEDB-provider is geïnstalleerd die de database-indeling ondersteunt.

Voorbeeld

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

of

<MailMergeObject>.OpenDataSource Name:="C:\MyDataSource.odc", _
           SQLStatement:="SELECT * FROM [MyTable]"

Word en andere Office XP-toepassingen gebruiken het Office DataSource-object (ODSO) voor OLEDB-toegang tot externe gegevensbronnen. ODSO is het enige mechanisme waarmee Word toegang heeft tot gegevens met behulp van OLEDB voor afdruk samenvoegen. Odso vereist dat het argument Naam voor OpenDataSource een volledig pad naar een database of een volledig pad naar een geldig ODC-bestand is. Odso negeert alle informatie in het argument Verbinding.

ODBC gebruiken

U kunt ODBC voor uw samenvoegbewerking gebruiken voor toegang tot gegevens waarvoor een DSN (User Data Source Name) is ingesteld op het systeem. Als u ODBC wilt opgeven als de methode voor gegevenstoegang met OpenDataSource, geeft u een lege tekenreeks op voor het argument Name, een ODBC-connection string voor het argument Connection en wdMergeSubTypeWord2000 voor het subtypeargument.

Voorbeeld

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

DDE gebruiken

U kunt DDE gebruiken voor toegang tot gegevens in Microsoft Access-databases of Microsoft Excel-werkmappen. Als u DDE wilt opgeven als de methode voor gegevenstoegang met OpenDataSource, geeft u het pad en de bestandsnaam op voor de database of de werkmap voor het argument Name en wdMergeSubTypeWord2000 voor het subtypeargument.

Voorbeeld

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

Automation-voorbeeld

Met de volgende voorbeeldcode wordt een samenvoegbewerking voor formulierbrieven gemaakt en uitgevoerd met behulp van OLEDB (via ODSO). De gegevensbron die wordt gebruikt, is de access-voorbeelddatabase Northwind.mdb. Als Northwind niet is geïnstalleerd, start u Microsoft Access 2002 of Microsoft Office Access 2003. Klik in het Menu Help op Voorbeelddatabases en kies vervolgens Northwind Sample Database om deze functie te installeren.

Volg deze stappen om dit voorbeeld uit te voeren:

  1. Start een nieuw Standard EXE-project in Visual Basic. Standaard wordt Form1 gemaakt.

  2. Klik in het menu Project op Verwijzingen.

  3. Klik op Microsoft Word 2000 Objectbibliotheek in de lijst met verwijzingen en klik vervolgens op OK.

    Opmerking Als u het Microsoft Office Word 2003-object wilt gebruiken, voegt u de Microsoft Word 11.0-objectbibliotheek toe aan de lijst met verwijzingen en klikt u op OK.

  4. Voeg een CommandButton-besturingselement toe aan Form1.

  5. Voeg de volgende code toe aan de codemodule voor Form1.

    Opmerking Als dit nodig is, wijzigt u het pad naar Northwind.mdb zodat het overeenkomt met uw installatie voor Office XP.

    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. Druk op F5 om het programma uit te voeren.

  7. Klik op het besturingselement CommandButton op Form1 om de samenvoegbewerking uit te voeren.

Wanneer de code is voltooid, wordt Word zichtbaar gemaakt met een nieuw document geopend. Het nieuwe document bevat formulierbrieven die het resultaat zijn van een samenvoegbewerking met gegevens die zijn geëxtraheerd uit de tabel Klanten in Northwind.mdb.

Verwijzingen

Bekijk het artikel in de Microsoft Knowledge Base voor meer informatie:

285176 Word automatiseren om afdruk samenvoegen aan de clientzijde uit te voeren met XML van SQL Server