Slik automatiserer du Word med Visual Basic for å opprette en utskriftsfletting
Sammendrag
Denne artikkelen beskriver hvordan du automatiserer Word for å opprette en utskriftsfletting for en ekstern datakilde. Denne artikkelen forklarer også kodeforskjellene mellom tilgang til dataene med OLEDB, ODBC og dynamisk datautveksling (DDE).
Mer informasjon
Datatilgangsmetoder
Hvis du vil konfigurere en datakilde programmatisk for et dokument for utskriftsfletting i Word, må du først kalle metoden OpenDataSource for et MailMerge-objekt. Syntaksen for OpenDataSource-metoden er som følger:
<MailMergeObject>.OpenDataSource(Name, [Format], [ConfirmConversions], [ReadOnly], [LinkToSource], [AddToRecentFiles], [PasswordDocument], [PasswordTemplate], [Revert],[WritePasswordDocument], [WritePasswordTemplate], [Connection], [SQLStatement], [SQLStatement1], [OpenExclusive], [SubType])
Merk
Hvis du vil ha en fullstendig beskrivelse av hvert argument, kan du se Hjelp for Microsoft Word Visual Basic på Nettet. Av primær interesse for å koble til en ekstern datakilde er argumentene Navn, Tilkobling og Undertype. Ulike kombinasjoner av disse tre argumentene representerer ulike datatilgangsmetoder for utskriftsflettingen.
Bruke OLEDB
OLEDB er den anbefalte datatilgangsmetoden. Hvis du vil angi OLEDB som datatilgangsmetode med OpenDataSource, angir du Navn-argumentet med banen og filnavnet til databasen eller en Office DataSource-tilkobling (ODC). Hvis du angir en database for Navn-argumentet, vil Word automatisk bruke OLEDB hvis det er installert en OLEDB-leverandør som støtter databaseformatet.
Eksempel
<MailMergeObject>.OpenDataSource Name:="C:\MyDB.mdb", _
SQLStatement:="SELECT * FROM [MyTable]"
eller
<MailMergeObject>.OpenDataSource Name:="C:\MyDataSource.odc", _
SQLStatement:="SELECT * FROM [MyTable]"
Word og andre Office XP-programmer bruker Office DataSource Object (ODSO) for OLEDB-tilgang til eksterne datakilder. ODSO er den eneste mekanismen som Word kan få tilgang til data ved hjelp av OLEDB for en utskriftsfletting. ODSO krever at Name-argumentet for OpenDataSource enten er en fullstendig bane til en database eller en fullstendig bane til en gyldig ODC-fil. ODSO ignorerer all informasjon i tilkoblingsargumentet.
Bruke ODBC
Du kan bruke ODBC for utskriftsflettingen til å få tilgang til data som et brukerdatakildenavn (DSN) er konfigurert for på systemet. Hvis du vil angi ODBC som datatilgangsmetode med OpenDataSource, angir du en tom streng for Name-argumentet, en ODBC-tilkoblingsstreng for Connection-argumentet og wdMergeSubTypeWord2000 for SubType-argumentet.
Eksempel
<MailMergeObject>.OpenDataSource Name:= "", _
Connection:= "DSN=MySQLServerDSN;DATABASE=pubs;uid=sa;pwd=;", _
SQLStatement:= "Select au_id, au_lname, au_fname from authors", _
SubType:= wdMergeSubTypeWord2000
Bruke DDE
Du kan bruke DDE til å få tilgang til data i Microsoft Access-databaser eller Microsoft Excel-arbeidsbøker. Hvis du vil angi DDE som datatilgangsmetode med OpenDataSource, angir du banen og filnavnet til databasen eller arbeidsboken for Name-argumentet, og wdMergeSubTypeWord2000 for SubType-argumentet.
Eksempel
<MailMergeObject>.OpenDataSource Name:="C:\MyDB.mdb", _
SQLStatement:="SELECT * FROM [MyTable]", _
SubType:=wdMergeSubTypeWord2000
Automatiseringseksempel
Følgende eksempelkode oppretter og kjører en utskriftsfletting for skjemabrev ved hjelp av OLEDB (ved hjelp av ODSO). Datakilden som brukes, er eksempeldatabasen Northwind.mdb. Hvis Northwind ikke er installert, starter du Microsoft Access 2002 eller Microsoft Office Access 2003. Klikk Eksempeldatabaser på Hjelp-menyen, og velg deretter Eksempeldatabase for Northwind for å installere denne funksjonen.
Følg disse trinnene for å kjøre dette eksemplet:
Start et nytt Standard EXE-prosjekt i Visual Basic. Skjema1 opprettes som standard.
Klikk Referanser på Prosjekt-menyen.
Klikk Microsoft Word 2000-objektbibliotek i listen over referanser, og klikk deretter OK.
Merk Hvis du vil bruke Microsoft Office Word 2003-objektet, legger du til Microsoft Word 11.0-objektbiblioteket i listen over referanser, og deretter klikker du OK.
Legg til en CommandButton-kontroll i Skjema1.
Legg til følgende kode i kodemodulen for Form1.
Merk Hvis det er nødvendig, endrer du banen til Northwind.mdb for å samsvare med installasjonen for 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
Trykk F5 for å kjøre programmet.
Klikk CommandButton-kontrollen i Skjema1 for å utføre utskriftsflettingen.
Når koden er fullført, blir Word synliggjort med et nytt dokument åpent. Det nye dokumentet inneholder skjemabrev som er et resultat av en utskriftsfletting som inneholder data som er trukket ut fra Kunder-tabellen i Northwind.mdb.
Referanser
Hvis du vil ha mer informasjon, kan du se artikkelen i Microsoft Knowledge Base:
285176 Slik automatiserer du Word til å utføre en utskriftsfletting på klientsiden ved hjelp av XML fra SQL Server