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:
Spusťte nový projekt Standard EXE v jazyce Visual Basic. Ve výchozím nastavení je vytvořen Formulář1.
V nabídce Projekt klepněte na příkaz Odkazy.
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.
Přidejte ovládací prvek CommandButton do form1.
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
Stisknutím klávesy F5 spusťte program.
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