Jak automatizovat Word pomocí jazyka Visual Basic k vytvoření hromadné korespondence

Souhrn

Tento článek popisuje, jak automatizovat wordovou hromadnou korespondenci pro externí zdroj dat. Tento článek také vysvětluje rozdíly v kódu mezi přístupem k datům pomocí OLEDB, ODBC a dynamické výměny dat (DDE).

Další informace

Metody přístupu k datům

Chcete-li programově nastavit zdroj dat pro dokument hromadné korespondence aplikace Word, nejprve zavolejte metodu OpenDataSource objektu MailMerge. Syntaxe metody OpenDataSource je následující:

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

Poznámka

Úplný popis jednotlivých argumentů najdete v online nápovědě k jazyku Microsoft Word Visual Basic. Primárním zájmem pro připojení k externímu zdroji dat jsou argumenty Název, Připojení a PodTyp. Různé kombinace těchto tří argumentů představují různé metody přístupu k datům pro hromadnou korespondenci.

Použití OLEDB

Doporučená metoda přístupu k datům je OLEDB. Chcete-li určit OLEDB jako metodu přístupu k datům pomocí OpenDataSource, zadejte argument Name s cestou a názvem souboru do databáze nebo připojení Office DataSource (.odc). Pokud zadáte databázi pro argument Název, Word automaticky použije OLEDB, pokud je nainstalován zprostředkovatel OLEDB, který podporuje formát databáze.

Příklad

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

nebo

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

Word a další aplikace Office XP používají objekt OdSO (Office DataSource Object) pro přístup OLEDB k externím zdrojům dat. Odso je jediný mechanismus, pomocí kterého word může přistupovat k datům pomocí OLEDB pro hromadnou korespondenci. OdSO vyžaduje, aby argument Název pro OpenDataSource byl buď úplnou cestou k databázi, nebo úplnou cestou k platnému souboru ODC. Odso ignoruje všechny informace v argumentu Připojení.

Použití rozhraní ODBC

Pomocí rozhraní ODBC pro hromadnou korespondenci můžete získat přístup k datům, pro která byl v systému nastaven název zdroje dat uživatele (DSN). Chcete-li určit ODBC jako metodu přístupu k datům pomocí OpenDataSource, zadejte prázdný řetězec pro argument Název, připojovací řetězec ODBC pro argument Připojení a wdMergeSubTypeWord2000 pro argument PodTyp.

Příklad

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

Použití DDE

DDE můžete použít pro přístup k datům v databázích Microsoft Accessu nebo sešitech Microsoft Excelu. Chcete-li určit DDE jako metodu přístupu k datům pomocí OpenDataSource, zadejte cestu a název souboru do databáze nebo sešitu pro argument Název a wdMergeSubTypeWord2000 pro argument SubType.

Příklad

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

Ukázka automatizace

Následující ukázkový kód vytvoří a spustí hromadnou korespondenci pro formulářová písmena pomocí OLEDB (prostřednictvím ODSO). Použitý zdroj dat je ukázková accessová databáze Northwind.mdb. Pokud northwind není nainstalován, spusťte aplikaci Microsoft Access 2002 nebo Microsoft Office Access 2003. V nabídce Nápověda klepněte na tlačítko Ukázkové databázea pak zvolte Ukázková databáze Northwind nainstalovat tuto funkci.

Pokud chcete spustit tuto ukázku, postupujte takto:

  1. Spusťte nový projekt Standard EXE v jazyce Visual Basic. Ve výchozím nastavení je vytvořen Formulář1.

  2. V nabídce Projekt klepněte na příkaz Odkazy.

  3. Klepněte na položku Knihovna objektů aplikace Microsoft Word 2000 v seznamu odkazů a klepněte na tlačítko OK.

    Poznámka Chcete-li použít objekt aplikace Microsoft Office Word 2003, přidejte do seznamu odkazů knihovnu objektů aplikace Microsoft Word 11.0 a potom klepněte na tlačítko OK.

  4. Přidejte ovládací prvek CommandButton do form1.

  5. Do modulu kódu pro Form1 přidejte následující kód.

    Poznámka V případě potřeby upravte cestu k souboru Northwind.mdb tak, aby odpovídala vaší instalaci sady 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. Stisknutím klávesy F5 spusťte program.

  7. Chcete-li provést hromadnou korespondenci, klikněte na ovládací prvek CommandButton ve formuláři Form1.

Po dokončení kódu se Word zobrazí s otevřeným novým dokumentem. Nový dokument obsahuje formulářová písmena, která jsou výsledkem hromadné korespondence obsahující data extrahovaná z tabulky Customers v northwind.mdb.

Odkazy

Další informace najdete v článku znalostní báze Microsoft Knowledge Base:

285176 Jak automatizovat wordovou hromadnou korespondenci na straně klienta pomocí XML z SQL Server