Wordin automatisoiminen Visual Basicilla yhdistämisen luomiseksi

Yhteenveto

Tässä artikkelissa käsitellään Wordin automatisoimista ulkoisen tietolähteen yhdistämisen luomiseksi. Tässä artikkelissa kerrotaan myös koodieroista OLEDB-, ODBC- ja DDE-tietojen välillä.

Lisätietoja

Tietojen käyttötavat

Jos haluat määrittää tietolähteen Wordin yhdistämisasiakirjaa varten, kutsu ensin MailMerge-objektin OpenDataSource-menetelmää. OpenDataSource-menetelmän syntaksi on seuraava:

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

Huomautus

Lisätietoja jokaisesta argumentista on Microsoft Word Visual Basicin online-ohjeessa. Ulkoiseen tietolähteeseen yhdistämisen ensisijaisesti kiinnostavat argumentit Name, Connection ja SubType. Näiden kolmen argumentin erilaiset yhdistelmät edustavat yhdistämisen erilaisia tietojen käyttötapoja.

OLEDB:n käyttäminen

OLEDB on suositeltu tietojen käyttötapa. Jos haluat määrittää OPENDataSourcen tietojenkäyttömenetelmäksi OLEDB:n, anna Nimi-argumentti, jolla on polku ja tiedostonimi, joko tietokantaan tai Office DataSource -yhteyteen (.odc). Jos annat Tietokannan Nimi-argumentille, Word käyttää OLEDB-tietokantaa automaattisesti, jos tietokantamuotoa tukeva OLEDB-palvelu on asennettu.

Esimerkki

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

TAI

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

Word ja muut Office XP -sovellukset käyttävät Office DataSource Object (ODSO) -objektia OLEDB:n pääsyyn ulkoisiin tietolähteisiin. ODSO on ainoa mekanismi, jonka avulla Word voi käyttää tietoja OLEDB:n avulla yhdistämistä varten. ODSO edellyttää, että OpenDataSource-kohteen Name-argumentti on joko täydellinen polku tietokantaan tai kelvollisen ODC-tiedoston täydellinen polku. ODSO ohittaa kaikki Connection-argumentin tiedot.

ODBC:n käyttäminen

Voit käyttää ODBC:tä yhdistämisessä tietoihin, joille on määritetty käyttäjän tietolähteen nimi (DSN) järjestelmään. Jos haluat määrittää ODBC:n tietojen käyttömenetelmäksi OpenDataSourcessa, anna tyhjä merkkijono Nimi-argumentille, ODBC-yhteysmerkkijono Connection-argumentille ja wdMergeSubTypeWord2000 SubType-argumentille.

Esimerkki

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

DDE:n käyttäminen

DDE:n avulla voit käyttää Microsoft Access -tietokantojen tai Microsoft Excel -työkirjojen tietoja. Jos haluat määrittää DDE:n OpenDataSourcen tietojenkäyttömenetelmäksi, anna tietokannan polku ja tiedostonimi tai työkirja Name-argumentille ja wdMergeSubTypeWord2000 SubType-argumentille.

Esimerkki

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

Automaatiomalli

Seuraava mallikoodi luo ja suorittaa lomakekirjaimien yhdistämisen OLEDB:n avulla (ODSO:n avulla). Käytettävä tietolähde on Access-mallitietokanta Northwind.mdb. Jos Northwindia ei ole asennettu, käynnistä Microsoft Access 2002 tai Microsoft Office Access 2003. Valitse Ohje-valikostaMallitietokannat ja asenna sitten tämä ominaisuus valitsemalla Northwind-mallitietokanta.

Suorita tämä malli seuraavasti:

  1. Aloita uusi Standard EXE -projekti Visual Basicissa. Oletusarvon mukaan Form1 luodaan.

  2. Valitse Projekti-valikostaViittaukset.

  3. Valitse Microsoft Word 2000 -objektikirjasto viittausluettelosta ja valitse sitten OK.

    Huomautus Jos haluat käyttää Microsoft Office Word 2003 -objektia, lisää Microsoft Word 11.0 -objektikirjasto viittausluetteloon ja valitse sitten OK.

  4. Lisää CommandButton-ohjausobjekti Form1:een.

  5. Lisää seuraava koodi Form1:n koodimoduuliin.

    Huomautus Jos se on tarpeen, muokkaa Northwind.mdb-polkua vastaamaan Office XP -asennustasi.

    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. Suorita ohjelma painamalla F5-näppäintä.

  7. Suorita yhdistäminen napsauttamalla Form1:n CommandButton-ohjausobjektia .

Kun koodi on valmis, Word tulee näkyviin, kun uusi asiakirja avataan. Uusi asiakirja sisältää yhdistämisen tuloksena saatuja lomakekirjaimia, jotka sisältävät Northwind.mdb:n Asiakkaat-taulukosta poimittuja tietoja.

Lisätietoja

Lisätietoja on Microsoft Knowledge Base -tietokannan artikkelissa:

285176 Wordin automatisointi asiakaspuolen yhdistämisen suorittamiseksi SQL Server XML:n avulla