Slik automatiserer du Word med Visual Basic for å opprette en utskriftsfletting

Sammendrag

Denne artikkelen beskriver hvordan du automatiserer Word for å opprette en utskriftsfletting for en ekstern datakilde. Denne artikkelen forklarer også kodeforskjellene mellom tilgang til dataene med OLEDB, ODBC og dynamisk datautveksling (DDE).

Mer informasjon

Datatilgangsmetoder

Hvis du vil konfigurere en datakilde programmatisk for et dokument for utskriftsfletting i Word, må du først kalle metoden OpenDataSource for et MailMerge-objekt. Syntaksen for OpenDataSource-metoden er som følger:

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

Merk

Hvis du vil ha en fullstendig beskrivelse av hvert argument, kan du se Hjelp for Microsoft Word Visual Basic på Nettet. Av primær interesse for å koble til en ekstern datakilde er argumentene Navn, Tilkobling og Undertype. Ulike kombinasjoner av disse tre argumentene representerer ulike datatilgangsmetoder for utskriftsflettingen.

Bruke OLEDB

OLEDB er den anbefalte datatilgangsmetoden. Hvis du vil angi OLEDB som datatilgangsmetode med OpenDataSource, angir du Navn-argumentet med banen og filnavnet til databasen eller en Office DataSource-tilkobling (ODC). Hvis du angir en database for Navn-argumentet, vil Word automatisk bruke OLEDB hvis det er installert en OLEDB-leverandør som støtter databaseformatet.

Eksempel

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

eller

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

Word og andre Office XP-programmer bruker Office DataSource Object (ODSO) for OLEDB-tilgang til eksterne datakilder. ODSO er den eneste mekanismen som Word kan få tilgang til data ved hjelp av OLEDB for en utskriftsfletting. ODSO krever at Name-argumentet for OpenDataSource enten er en fullstendig bane til en database eller en fullstendig bane til en gyldig ODC-fil. ODSO ignorerer all informasjon i tilkoblingsargumentet.

Bruke ODBC

Du kan bruke ODBC for utskriftsflettingen til å få tilgang til data som et brukerdatakildenavn (DSN) er konfigurert for på systemet. Hvis du vil angi ODBC som datatilgangsmetode med OpenDataSource, angir du en tom streng for Name-argumentet, en ODBC-tilkoblingsstreng for Connection-argumentet og wdMergeSubTypeWord2000 for SubType-argumentet.

Eksempel

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

Bruke DDE

Du kan bruke DDE til å få tilgang til data i Microsoft Access-databaser eller Microsoft Excel-arbeidsbøker. Hvis du vil angi DDE som datatilgangsmetode med OpenDataSource, angir du banen og filnavnet til databasen eller arbeidsboken for Name-argumentet, og wdMergeSubTypeWord2000 for SubType-argumentet.

Eksempel

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

Automatiseringseksempel

Følgende eksempelkode oppretter og kjører en utskriftsfletting for skjemabrev ved hjelp av OLEDB (ved hjelp av ODSO). Datakilden som brukes, er eksempeldatabasen Northwind.mdb. Hvis Northwind ikke er installert, starter du Microsoft Access 2002 eller Microsoft Office Access 2003. Klikk EksempeldatabaserHjelp-menyen, og velg deretter Eksempeldatabase for Northwind for å installere denne funksjonen.

Følg disse trinnene for å kjøre dette eksemplet:

  1. Start et nytt Standard EXE-prosjekt i Visual Basic. Skjema1 opprettes som standard.

  2. Klikk ReferanserProsjekt-menyen.

  3. Klikk Microsoft Word 2000-objektbibliotek i listen over referanser, og klikk deretter OK.

    Merk Hvis du vil bruke Microsoft Office Word 2003-objektet, legger du til Microsoft Word 11.0-objektbiblioteket i listen over referanser, og deretter klikker du OK.

  4. Legg til en CommandButton-kontroll i Skjema1.

  5. Legg til følgende kode i kodemodulen for Form1.

    Merk Hvis det er nødvendig, endrer du banen til Northwind.mdb for å samsvare med installasjonen for 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. Trykk F5 for å kjøre programmet.

  7. Klikk CommandButton-kontrollen i Skjema1 for å utføre utskriftsflettingen.

Når koden er fullført, blir Word synliggjort med et nytt dokument åpent. Det nye dokumentet inneholder skjemabrev som er et resultat av en utskriftsfletting som inneholder data som er trukket ut fra Kunder-tabellen i Northwind.mdb.

Referanser

Hvis du vil ha mer informasjon, kan du se artikkelen i Microsoft Knowledge Base:

285176 Slik automatiserer du Word til å utføre en utskriftsfletting på klientsiden ved hjelp av XML fra SQL Server