Τρόπος αυτοματοποίησης του Microsoft Word για να εκτελέσετε συγχώνευση αλληλογραφίας από τη Visual Basic

Σύνοψη

Αυτό το άρθρο παρουσιάζει τον τρόπο χρήσης του Microsoft Word για να δημιουργήσετε ένα έγγραφο με συγχώνευση αλληλογραφίας χρησιμοποιώντας αυτοματοποίηση από τη Microsoft Visual Basic.

Περισσότερες πληροφορίες

Υπάρχουν δύο τρόποι για να ελέγξετε ένα διακομιστή αυτοματοποίησης: με καθυστερημένη σύνδεση ή χρησιμοποιώντας δέσμευση νωρίς. Με αργή ενοποίηση μεθόδους δεν είναι συνδεδεμένα μέχρι το χρόνο εκτέλεσης και ο διακομιστής Automation έχει δηλωθεί ως αντικείμενο. Με δέσμευση νωρίς, η εφαρμογή σας γνωρίζει κατά το χρόνο σχεδίασης τον ακριβή τύπο του αντικειμένου που θα επικοινωνούν με και να δηλώσετε τα αντικείμενά της ως ενός συγκεκριμένου τύπου. Αυτό το δείγμα χρησιμοποιεί δέσμευση νωρίς, η οποία θεωρείται καλύτερα στις περισσότερες περιπτώσεις, γιατί αυτό δίνει μεγαλύτερη απόδοση και την καλύτερη ασφάλεια τύπου.

Για την πρώτη σύνδεση σε ένα διακομιστή αυτοματοποίησης, πρέπει να ορίσετε μια παραπομπή σε αυτόν το διακομιστή βιβλιοθήκης τύπων. Στη Visual Basic, αυτό γίνεται μέσω του πλαισίου διαλόγου " αναφορές ". Για να ανοίξετε το πλαίσιο διαλόγου " αναφορές ", κάντε κλικ στο κουμπί " αναφορές " στο μενού έργο . Για αυτό το δείγμα, πρέπει να προσθέσετε μια αναφορά στη βιβλιοθήκη τύπων για το Word για να εκτελέσετε τον κώδικα.

Δημιουργία του δείγματος αυτοματισμού

  1. Ξεκινήστε το Visual Basic και δημιουργήστε ένα νέο έργο Standard EXE. Από προεπιλογή, δημιουργείται η φόρμα Form1.
  2. Προσθέστε ένα στοιχείο ελέγχου CommandButton Form1.
  3. Στο μενού ' έργο ', κάντε κλικ στην επιλογή αναφορές για να ανοίξετε το πλαίσιο διαλόγου " αναφορές ".
  4. Επιλέξτε Βιβλιοθήκη αντικειμένων του Microsoft Word 11.0 για να δημιουργήσετε μια αναφορά στη βιβλιοθήκη τύπων του Microsoft Office Word 2003. Για το Word 2002, επιλέξτε τη Βιβλιοθήκη αντικειμένων του Microsoft Word 10.0. Για το Word 2000, επιλέξτε τη Βιβλιοθήκη αντικειμένων του Microsoft Word 9.0. Για το Word 97, επιλέξτε τη Βιβλιοθήκη αντικειμένων του Microsoft Word 8.0.
  5. Κάντε κλικ στο κουμπί OK για να κλείσετε το πλαίσιο διαλόγου " αναφορές ".
  6. Στο παράθυρο κώδικα της φόρμας Form1, προσθέστε τον ακόλουθο κώδικα:
    Option ExplicitDim wrdApp As Word.Application
    Dim wrdDoc As Word.Document

    Private Sub Command1_Click()
    Dim wrdSelection As Word.Selection
    Dim wrdMailMerge As Word.MailMerge
    Dim wrdMergeFields As Word.MailMergeFields

    Dim StrToAdd As String

    ' Create an instance of Word, and make it visible.
    Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = True

    ' Add a new document.

    Set wrdDoc = wrdApp.Documents.Add
    wrdDoc.Select

    Set wrdSelection = wrdApp.Selection
    Set wrdMailMerge = wrdDoc.MailMerge

    ' Create the MailMerge Data file.
    CreateMailMergeDataFile

    ' Create a string, and insert it into the document.
    StrToAdd = "State University" & vbCr & _
    "Electrical Engineering Department"
    wrdSelection.ParagraphFormat.Alignment = wdAlignParagraphCenter
    wrdSelection.TypeText StrToAdd

    InsertLines 4

    ' Insert merge data.
    wrdSelection.ParagraphFormat.Alignment = wdAlignParagraphLeft
    Set wrdMergeFields = wrdMailMerge.Fields
    wrdMergeFields.Add wrdSelection.Range, "FirstName"
    wrdSelection.TypeText " "
    wrdMergeFields.Add wrdSelection.Range, "LastName"
    wrdSelection.TypeParagraph

    wrdMergeFields.Add wrdSelection.Range, "Address"
    wrdSelection.TypeParagraph
    wrdMergeFields.Add wrdSelection.Range, "CityStateZip"

    InsertLines 2

    ' Right align the line, and insert a date field
    ' with the current date.
    wrdSelection.ParagraphFormat.Alignment = _
    wdAlignParagraphRight
    wrdSelection.InsertDateTime _
    DateTimeFormat:="dddd, MMMM dd, yyyy", _
    InsertAsField:=False

    InsertLines 2

    ' Align the rest of the document.
    wrdSelection.ParagraphFormat.Alignment = _
    wdAlignParagraphJustify



    wrdSelection.TypeText "Dear "
    wrdMergeFields.Add wrdSelection.Range, "FirstName"
    wrdSelection.TypeText ","
    InsertLines 2

    ' Create a string, and insert it into the document.
    StrToAdd = "Thank you for your recent request for next " & _
    "semester's class schedule for the Electrical " & _
    "Engineering Department. Enclosed with this " & _
    "letter is a booklet containing all the classes " & _
    "offered next semester at State University. " & _
    "Several new classes will be offered in the " & _
    "Electrical Engineering Department next semester. " & _
    "These classes are listed below."
    wrdSelection.TypeText StrToAdd

    InsertLines 2

    ' Insert a new table with 9 rows and 4 columns.
    wrdDoc.Tables.Add wrdSelection.Range, NumRows:=9, _
    NumColumns:=4
    With wrdDoc.Tables(1)
    ' Set the column widths
    .Columns(1).SetWidth 51, wdAdjustNone
    .Columns(2).SetWidth 170, wdAdjustNone
    .Columns(3).SetWidth 100, wdAdjustNone
    .Columns(4).SetWidth 111, wdAdjustNone
    ' Set the shading on the first row to light gray.
    .Rows(1).Cells.Shading.BackgroundPatternColorIndex = _
    wdGray25
    ' Format the first row in bold.
    .Rows(1).Range.Bold = True
    ' Center the text in Cell (1,1).
    .Cell(1, 1).Range.Paragraphs.Alignment = wdAlignParagraphCenter

    ' Fill each row of the table with data.
    FillRow wrdDoc, 1, "Class Number", "Class Name", "Class Time", _
    "Instructor"
    FillRow wrdDoc, 2, "EE220", "Introduction to Electronics II", _
    "1:00-2:00 M,W,F", "Dr. Jensen"
    FillRow wrdDoc, 3, "EE230", "Electromagnetic Field Theory I", _
    "10:00-11:30 T,T", "Dr. Crump"
    FillRow wrdDoc, 4, "EE300", "Feedback Control Systems", _
    "9:00-10:00 M,W,F", "Dr. Murdy"
    FillRow wrdDoc, 5, "EE325", "Advanced Digital Design", _
    "9:00-10:30 T,T", "Dr. Alley"
    FillRow wrdDoc, 6, "EE350", "Advanced Communication Systems", _
    "9:00-10:30 T,T", "Dr. Taylor"
    FillRow wrdDoc, 7, "EE400", "Advanced Microwave Theory", _
    "1:00-2:30 T,T", "Dr. Lee"
    FillRow wrdDoc, 8, "EE450", "Plasma Theory", _
    "1:00-2:00 M,W,F", "Dr. Davis"

    FillRow wrdDoc, 9, "EE500", "Principles of VLSI Design", _
    "3:00-4:00 M,W,F", "Dr. Ellison"
    End With

    ' Go to the end of the document.
    wrdApp.Selection.GoTo wdGoToLine, wdGoToLast
    InsertLines 2

    ' Create a string, and insert it into the document.
    StrToAdd = "For additional information regarding the " & _

    "Department of Electrical Engineering, " & _
    "you can visit our Web site at "
    wrdSelection.TypeText StrToAdd
    ' Insert a hyperlink to the Web page.
    wrdSelection.Hyperlinks.Add Anchor:=wrdSelection.Range, _
    Address:="http://www.ee.stateu.tld"
    ' Create a string, and insert it into the document.
    StrToAdd = ". Thank you for your interest in the classes " & _
    "offered in the Department of Electrical " & _
    "Engineering. If you have any other questions, " & _
    "please feel free to give us a call at " & _
    "555-1212." & vbCr & vbCr & _
    "Sincerely," & vbCr & vbCr & _
    "Kathryn M. Hinsch" & vbCr & _
    "Department of Electrical Engineering" & vbCr
    wrdSelection.TypeText StrToAdd

    ' Perform mail merge.
    wrdMailMerge.Destination = wdSendToNewDocument
    wrdMailMerge.Execute False

    ' Close the original form document.
    wrdDoc.Saved = True
    wrdDoc.Close False

    ' Notify user we are done.
    MsgBox "Mail Merge Complete.", vbMsgBoxSetForeground

    ' Release references.
    Set wrdSelection = Nothing
    Set wrdMailMerge = Nothing
    Set wrdMergeFields = Nothing
    Set wrdDoc = Nothing
    Set wrdApp = Nothing

    ' Clean up the temp file.
    Kill "C:\DataDoc.doc"
    End Sub

    Public Sub InsertLines(LineNum As Integer)
    Dim iCount As Integer

    ' Insert "LineNum" blank lines.
    For iCount = 1 To LineNum
    wrdApp.Selection.TypeParagraph
    Next iCount
    End Sub

    Public Sub FillRow(Doc As Word.Document, Row As Integer, _
    Text1 As String, Text2 As String, _
    Text3 As String, Text4 As String)

    With Doc.Tables(1)
    ' Insert the data into the specific cell.
    .Cell(Row, 1).Range.InsertAfter Text1
    .Cell(Row, 2).Range.InsertAfter Text2
    .Cell(Row, 3).Range.InsertAfter Text3
    .Cell(Row, 4).Range.InsertAfter Text4
    End With
    End Sub

    Public Sub CreateMailMergeDataFile()
    Dim wrdDataDoc As Word.Document
    Dim iCount As Integer

    ' Create a data source at C:\DataDoc.doc that contains the field data.
    wrdDoc.MailMerge.CreateDataSource Name:="C:\DataDoc.doc", _
    HeaderRecord:="FirstName, LastName, Address, CityStateZip"
    ' Open the file to insert the data.
    Set wrdDataDoc = wrdApp.Documents.Open("C:\DataDoc.doc")
    For iCount = 1 To 2
    wrdDataDoc.Tables(1).Rows.Add
    Next iCount
    ' Fill in the data.
    FillRow wrdDataDoc, 2, "Steve", "DeBroux", _
    "4567 Main Street", "Buffalo, NY 98052"
    FillRow wrdDataDoc, 3, "Jan", "Miksovsky", _
    "1234 5th Street", "Charlotte, NC 98765"
    FillRow wrdDataDoc, 4, "Brian", "Valentine", _
    "12348 78th Street Apt. 214", "Lubbock, TX 25874"
    ' Save and close the file.
    wrdDataDoc.Save
    wrdDataDoc.Close False
    End Sub

  7. Πιέστε το πλήκτρο F5 και κάντε κλικ στο κουμπί για να εκτελέσετε το δείγμα.

Αναφορές

Για περισσότερες πληροφορίες σχετικά με την αυτοματοποίηση του Office, επισκεφθείτε την ακόλουθη τοποθεσία υποστήριξης της ανάπτυξης του Microsoft Office:
Ιδιότητες

Αναγνωριστικό άρθρου: 220607 - Τελευταία αναθεώρηση: 10 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια