Làm thế nào để tự động hoá Microsoft Word để thực hiện Mail Merge từ Visual Basic

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:220607
Bài viết này đã được lưu trữ. Bài viết được cung cấp "nguyên trạng" và sẽ không còn được cập nhật nữa.
TÓM TẮT
Bài viết này chứng tỏ làm thế nào để sử dụng Microsoft Word để tạo ra một sáp nhập thư tài liệu bằng cách sử dụng tự động hóa từ Microsoft Visual Basic.
THÔNG TIN THÊM
Có hai cách để kiểm soát một máy chủ tự động hóa: bởi bằng cách sử dụng hậu ràng buộc hoặc bằng cách sử dụng đầu ràng buộc. Với hậu ràng buộc, phương pháp được không bị ràng buộc cho đến khi thời gian chạy và các máy chủ tự động hóa tuyên bố như đối tượng. Với đầu ràng buộc, ứng dụng của bạn biết tại thời gian thiết kế loại chính xác của đối tượng nó sẽ giao tiếp với và có thể tuyên bố các đối tượng của nó như là một loại hình cụ thể. Điều này mẫu sử dụng sớm ràng buộc, mà được xem là tốt hơn trong hầu hết trường hợp vì nó dành hiệu suất lớn hơn và tốt hơn loại an toàn.

Để sớm liên kết với một máy chủ tự động hóa, bạn phải đặt một tham chiếu đến loại rằng hệ phục vụ thư viện. Trong Visual Basic, điều này được thực hiện thông qua các Tham khảo hộp thoại. Để mở các Tham khảo hộp thoại hộp, bấm vào Tham khảo trên các Dự án trình đơn. Đối với mẫu này, bạn phải thêm một tham chiếu đến thư viện kiểu cho Word trước khi bạn có thể chạy mã.

Xây dựng mẫu tự động hóa

  1. Bắt đầu Visual Basic, và tạo ra một dự án mới của tiêu chuẩn EXE. Form1 được tạo ra theo mặc định.
  2. Thêm một CommandButton kiểm soát để Form1.
  3. Trên các Dự án trình đơn, nhấp vào Tham khảo để mở các Tham khảo hộp thoại hộp.
  4. Chọn Microsoft Word 11,0 đối tượng thư viện để tạo ra một tham chiếu đến thư viện kiểu Microsoft Office Word 2003. Đối với Word 2002, chọn Microsoft Word 10,0 đối tượng Thư viện. Đối với Word 2000, chọn Microsoft Word 9,0 đối tượng Thư viện. Đối với Word 97, chọn Microsoft Word 8,0 đối tượng thư viện.
  5. Nhấp vào Ok để đóng những Tham khảo hộp thoại.
  6. Trong cửa sổ mã cho Form1, thêm mã sau đây:
    Option ExplicitDim wrdApp As Word.ApplicationDim wrdDoc As Word.DocumentPrivate 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 SubPublic Sub InsertLines(LineNum As Integer)  Dim iCount As Integer' Insert "LineNum" blank lines.  For iCount = 1 To LineNum    wrdApp.Selection.TypeParagraph  Next iCountEnd SubPublic 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 WithEnd SubPublic 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 FalseEnd Sub					
  7. Bấm phím F5 và Click vào nút để chạy các mẫu.
THAM KHẢO
Để biết thêm thông tin về văn phòng tự động hóa, truy cập vào các phát triển văn phòng Microsoft hỗ trợ site sau:

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 220607 - Xem lại Lần cuối: 12/05/2015 13:09:28 - Bản sửa đổi: 2.0

Microsoft Visual Basic 5.0 Learning Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Office XP Developer Edition, Microsoft Office 2000 Developer Edition, Microsoft Word 2002 Standard Edition, Microsoft Word 2000 Standard Edition, Microsoft Word 97 Standard Edition

  • kbnosurvey kbarchive kbautomation kbhowto kbmt KB220607 KbMtvi
Phản hồi