Visual Basic에서 Microsoft Word를 자동화하여 편지 병합을 수행하는 방법

요약

이 문서에서는 Microsoft Visual Basic에서 자동화를 통해 Microsoft Word를 사용하여 편지 병합 문서를 만드는 방법을 보여줍니다.

추가 정보

자동화 서버를 제어하는 방법에는 후기 바인딩을 사용하는 방법과 초기 바인딩을 사용하는 방법이 있습니다. 후기 바인딩을 사용하는 경우 메서드는 런타임까지 바인딩되지 않으며 자동화 서버는 개체로 선언됩니다. 반면 초기 바인딩을 사용하는 경우 응용 프로그램은 통신할 정확한 개체 형식을 디자인 타임에 알고 있으며 해당 개체를 특정 형식으로 선언할 수 있습니다. 이 예제에서는 향상된 성능과 보다 나은 형식 안전성을 제공한다는 이유로 대부분의 경우에 선호되는 초기 바인딩을 사용합니다.

자동화 서버에 초기 바인딩을 사용하려면 해당 서버의 형식 라이브러리에 대한 참조를 설정해야 합니다. Visual Basic에서 이 작업은 참조 대화 상자를 통해 수행됩니다. 참조 대화 상자를 열려면 프로젝트 메뉴에서 참조를 누릅니다. 이 예제의 경우 Word 형식 라이브러리에 참조를 추가해야 코드를 실행할 수 있습니다.

자동화 예제 빌드

  1. Visual Basic을 시작하고 표준 EXE 프로젝트를 새로 만듭니다. 기본적으로 Form1이 만들어집니다.
  2. Form1에 CommandButton 컨트롤을 추가합니다.
  3. 프로젝트 메뉴에서 참조를 눌러 참조 대화 상자를 엽니다.
  4. Microsoft Word 11.0 Object Library를 선택하여 Microsoft Office Word 2003 형식 라이브러리에 대한 참조를 만듭니다. Word 2002의 경우 Microsoft Word 10.0 Object Library를 선택합니다. Word 2000의 경우 Microsoft Word 9.0 Object Library를 선택합니다. Word 97의 경우에는 Microsoft Word 8.0 Object Library를 선택합니다.
  5. 확인을 눌러 참조 대화 상자를 닫습니다.
  6. Form1의 코드 창에서 다음 코드를 추가합니다.
    Option Explicit
    Dim 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 Development 지원 사이트를 참조하십시오.



Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.
속성

문서 ID: 220607 - 마지막 검토: 2006. 5. 15. - 수정: 1

피드백