Word automatiseren vanuit Visual Basic om een samenvoegbewerking te maken voor adresetiketten
Samenvatting
In dit artikel wordt beschreven hoe u Microsoft Office Word automatiseert vanuit een Microsoft Visual Basic-toepassing voor het maken en uitvoeren van een samenvoegbewerking voor adresetiketten.
Meer informatie
De voorbeeldcode in dit artikel maakt gebruik van een tekstbestand met tabscheidingstekens voor de gegevensbron. Het tekstbestand heeft de volgende velden:
- Contact_Name
- Adres
- Plaats
- Postal_Code
- Land
U kunt elke teksteditor gebruiken om de gegevensbron van het tekstbestand te maken. U kunt bijvoorbeeld Kladblok gebruiken.
Wanneer u de gegevensbron maakt, moet u de velden (kolommen) scheiden met behulp van een tabteken en de records (rijen) scheiden met behulp van een regelterugloop. Hier volgt een voorbeeld van hoe het tekstbestand kan worden weergegeven:
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
Opmerking
U kunt elke andere gegevensbron gebruiken in plaats van het tekstbestand met tabscheidingstekens. U kunt bijvoorbeeld een Microsoft Access-database gebruiken.
Stapsgewijze voorbeeld
- Start een nieuw Standard EXE-project in Visual Basic. Standaard wordt een formulier met de naam Form1 gemaakt.
- Voeg een CommandButton toe aan Form1.
- Selecteer de Microsoft Word-objectbibliotheek voor de versie van Word die u wilt automatiseren en klik op OK.
- Kopieer de volgende code naar het codevenster van Form1.
Het argument Name voor de OpenDataSource-methode in deze code verwijst naar de gegevensbron als c:\data.txt. Als de gegevensbron een ander pad of een andere bestandsnaam heeft, wijzigt u deze regel in de code dienovereenkomstig.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
- Druk op F5 om het programma uit te voeren en klik vervolgens op Command1. Een mailinglabeldocument wordt gemaakt met behulp van gegevens die uit de gegevensbron worden gehaald.
Verwijzingen
Voor meer informatie over het automatiseren van Word of over het maken van samenvoegdocumenten klikt u op de volgende artikelnummers om de artikelen in de Microsoft Knowledge Base weer te geven:
220911 Microsoft Word automatiseren om afdruk samenvoegen uit te voeren met Visual C++ en MFC
212034 Adresetiketten maken met Afdruk samenvoegen in Word