Jak automatizovat Word z jazyka Visual Basic vytvořit hromadnou korespondenci pro adresní štítky

Souhrn

Tento článek popisuje, jak automatizovat aplikaci Microsoft Office Word z aplikace Microsoft Visual Basic a vytvořit a spustit hromadnou korespondenci pro adresní štítky.

Další informace

Ukázkový kód v tomto článku používá textový soubor oddělený tabulátory pro zdroj dat. Textový soubor obsahuje následující pole:

  • Contact_Name
  • Adresa
  • Město
  • Postal_Code
  • Země

K vytvoření zdroje dat textového souboru můžete použít libovolný textový editor. Můžete například použít Poznámkový blok.

Při vytváření zdroje dat nezapomeňte oddělit pole (sloupce) pomocí znaku tabulátoru a oddělit záznamy (řádky) pomocí návratu na začátek řádku. Tady je příklad toho, jak se může textový soubor zobrazit:

Contact_NameAddress City Postal_Code Country
Maria AndersObere Str. 57 Berlin 12209 Germany 
Thomas Hardy120 Hanover Sq. London WA1 1DP UK
Hanna MoosForsterstr. 57 Mannheim 68306 Germany
Laurence Lebihan 12, rue des Bouchers Marseille 13008 France

Poznámka

Místo textového souboru s oddělovači tabulátorem můžete použít jakýkoli jiný zdroj dat. Můžete například použít databázi Microsoft Accessu.

Podrobný příklad

  1. Spusťte nový projekt Standard EXE v jazyce Visual Basic. Ve výchozím nastavení je vytvořen formulář s názvem Form1.
  2. Přidejte commandButton do Form1.
  3. Vyberte knihovnu objektů aplikace Microsoft Word pro verzi aplikace Word, kterou chcete automatizovat, a klikněte na tlačítko OK.
  4. Zkopírujte následující kód do okna kódu Form1.
    Private Sub Command1_Click()
    
    Dim oApp As Word.Application
        Dim oDoc As Word.Document
    
    'Start a new document in Word
        Set oApp = CreateObject("Word.Application")
        Set oDoc = oApp.Documents.Add
    
    With oDoc.MailMerge
    
    'Insert the mail merge fields temporarily so that
            'you can use the range that contains the merge fields as a layout
            'for your labels -- to use this as a layout, you can add it
            'as an AutoText entry.
            With .Fields
                .Add oApp.Selection.Range, "Contact_Name"
                oApp.Selection.TypeParagraph
                .Add oApp.Selection.Range, "Address"
                oApp.Selection.TypeParagraph
                .Add oApp.Selection.Range, "City"
                oApp.Selection.TypeText "  "
                .Add oApp.Selection.Range, "Postal_Code"
                oApp.Selection.TypeText " -- "
                .Add oApp.Selection.Range, "Country"
            End With
            Dim oAutoText As Word.AutoTextEntry
            Set oAutoText = oApp.NormalTemplate.AutoTextEntries.Add("MyLabelLayout", oDoc.Content)
            oDoc.Content.Delete 'Merge fields in document no longer needed now
                                'that the AutoText entry for the label layout
                                'has been added so delete it.
    
    'Set up the mail merge type as mailing labels and use
            'a tab-delimited text file as the data source.
            .MainDocumentType = wdMailingLabels 
            .OpenDataSource Name:="C:\data.txt" 'Specify the data source here
    
    'Create the new document for the labels using the AutoText entry
            'you added -- 5160 is the label number to use for this sample.
            'You can specify the label number you want to use for the output
            'in the Name argument.
            oApp.MailingLabel.CreateNewDocument Name:="5160", Address:="", _
                AutoText:="MyLabelLayout", LaserTray:=wdPrinterManualFeed
    
    'Execute the mail merge to generate the labels.
            .Destination = wdSendToNewDocument
            .Execute
    
    'Delete the AutoText entry you added
            oAutoText.Delete
    
    End With
    
    'Close the original document and make Word visible so that
    
    'the mail merge results are displayed
        oDoc.Close False
        oApp.Visible = True
    
    'Prevent save to Normal template when user exits Word
        oApp.NormalTemplate.Saved = True
    
    End Sub
    
    
    Argument Name pro metodu OpenDataSource v tomto kódu odkazuje na zdroj dat jako c:\data.txt. Pokud má zdroj dat jinou cestu nebo jiný název souboru, upravte tento řádek v kódu odpovídajícím způsobem.
  5. Stisknutím klávesy F5 spusťte program a potom klepněte na příkaz Command1. Dokument adresní štítky se vytvoří pomocí dat, která jsou převzata ze zdroje dat.

Odkazy

Další informace o automatizaci aplikace Word nebo o vytváření dokumentů hromadné korespondence získáte v následujících článcích znalostní báze Microsoft Knowledge Base:

220911 Jak automatizovat aplikaci Microsoft Word k provedení hromadné korespondence pomocí visual C++ a MFC

212034 Vytvoření adresní štítky pomocí hromadné korespondence ve Wordu