Megosztás a következőn keresztül:


A Word automatizálása a Visual Basicből körlevélkészítéshez a levélcímkékhez

Összefoglalás

Ez a cikk azt ismerteti, hogyan automatizálhatja a Microsoft Office Word alkalmazást egy Microsoft Visual Basic alkalmazásból körlevélkészítési címkék létrehozásához és végrehajtásához.

További információ

A cikkben szereplő mintakód tabulátorral tagolt szövegfájlt használ az adatforráshoz. A szövegfájl a következő mezőket tartalmazza:

  • Contact_Name
  • Cím
  • Város
  • Postal_Code
  • Ország

A szövegfájl adatforrását bármilyen szövegszerkesztőben létrehozhatja. Használhatja például a Jegyzettömbet.

Az adatforrás létrehozásakor ne felejtse el a mezőket (oszlopokat) tabulátor karakterrel elválasztani, a rekordokat (sorokat) pedig kocsivissza karakterrel elválasztani. Az alábbiakban egy példa látható a szövegfájl megjelenésére:

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

Megjegyzés

A tabulátorral tagolt szövegfájl helyett bármilyen más adatforrást használhat. Használhat például Egy Microsoft Access-adatbázist.

Részletes példa

  1. Indítson el egy új Standard EXE-projektet a Visual Basicben. Alapértelmezés szerint létrejön egy Form1 nevű űrlap.
  2. Parancsgomb hozzáadása az 1. űrlaphoz.
  3. Jelölje ki a Microsoft Word objektumtárat az automatizálni kívánt Word-verzióhoz, majd kattintson az OK gombra.
  4. Másolja a következő kódot a Form1 kódablakba.
    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
    
    
    Az OpenDataSource metódus Name argumentuma ebben a kódban az adatforrásra c:\data.txt hivatkozik. Ha az adatforrás elérési útja vagy fájlneve eltérő, módosítsa ezt a sort a kódban ennek megfelelően.
  5. A program futtatásához nyomja le az F5 billentyűt, majd kattintson a Command1 parancsra. A levélcímke-dokumentum az adatforrásból származó adatok használatával jön létre.

Hivatkozások

A Word automatizálásával és a körlevél-dokumentumok létrehozásával kapcsolatos további információkért kattintson a következő cikkszámokra a Microsoft Tudásbázis cikkeinek megtekintéséhez:

220911 A Microsoft Word automatizálása körlevélkészítéshez a Visual C++ és az MFC használatával

212034 Levélcímkék létrehozása a Körlevél funkcióval a Wordben