您目前已離線,請等候您的網際網路重新連線

不支援您的瀏覽器

您必須更新瀏覽器,才能使用此網站。

更新至最新版本的 Internet Explorer

如何利用 Visual Basic 自動化 Microsoft Word,以建立新文件

Office 2003 支援已結束

Microsoft 於 2014 年 4 月 8 日結束對 Office 2003 的支援。此變更已影響您的軟體更新和安全性選項。 瞭解這對您的意義為何且如何持續受保護。

結論
本文將逐步告訴您,如何從 Visual Basic 使用「自動化」在 Word 中建立新文件。

回到頁首

範例程式碼

本文中的範例程式碼會示範如何執行下列操作:
  • 以文字和格式設定插入段落。
  • 瀏覽和修改文件內的各種範圍。
  • 插入表格,再格式化表格,並將資料填入表格。
  • 新增圖表。
如果要從 Visual Basic 使用「自動化」建立新的 Word 文件,請依照下列步驟執行:
  1. 在 Visual Basic 中,建立新的標準執行檔專案。根據預設會建立 Form1。
  2. [專案] 功能表上,選取 [參考]。選取 Word 的物件程式庫,然後按一下 [確定]

    下列是根據使用的 Word 版本所列出的物件程式庫清單:
    1. Microsoft Word 2000 - [Microsoft Word 9.0 Object Library]
    2. Microsoft Word 2002 - [Microsoft Word 10.0 Object Library]
    3. Microsoft Office Word 2003 - [Microsoft Word 11.0 Object Library]
  3. 新增 CommandButton 控制項至 Form1。
  4. 將下列程式碼加入 Command1 的 Click 事件:
        Dim oWord As Word.Application    Dim oDoc As Word.Document    Dim oTable As Word.Table    Dim oPara1 As Word.Paragraph, oPara2 As Word.Paragraph    Dim oPara3 As Word.Paragraph, oPara4 As Word.Paragraph    Dim oRng As Word.Range    Dim oShape As Word.InlineShape    Dim oChart As Object    Dim Pos as Double    'Start Word and open the document template.    Set oWord = CreateObject("Word.Application")    oWord.Visible = True    Set oDoc = oWord.Documents.Add        'Insert a paragraph at the beginning of the document.    Set oPara1 = oDoc.Content.Paragraphs.Add    oPara1.Range.Text = "Heading 1"    oPara1.Range.Font.Bold = True    oPara1.Format.SpaceAfter = 24    '24 pt spacing after paragraph.    oPara1.Range.InsertParagraphAfter        'Insert a paragraph at the end of the document.    '** \endofdoc is a predefined bookmark.    Set oPara2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks("\endofdoc").Range)    oPara2.Range.Text = "Heading 2"    oPara2.Format.SpaceAfter = 6    oPara2.Range.InsertParagraphAfter        'Insert another paragraph.    Set oPara3 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks("\endofdoc").Range)    oPara3.Range.Text = "This is a sentence of normal text. Now here is a table:"    oPara3.Range.Font.Bold = False    oPara3.Format.SpaceAfter = 24    oPara3.Range.InsertParagraphAfter        'Insert a 3 x 5 table, fill it with data and make the first row    'bold,italic.    Dim r As Integer, c As Integer    Set oTable = oDoc.Tables.Add(oDoc.Bookmarks("\endofdoc").Range, 3, 5)    oTable.Range.ParagraphFormat.SpaceAfter = 6    For r = 1 To 3        For c = 1 To 5            oTable.Cell(r, c).Range.Text = "r" & r & "c" & c        Next    Next    oTable.Rows(1).Range.Font.Bold = True    oTable.Rows(1).Range.Font.Italic = True        'Add some text after the table.    'oTable.Range.InsertParagraphAfter    Set oPara4 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks("\endofdoc").Range)    oPara4.Range.InsertParagraphBefore    oPara4.Range.Text = "And here's another table:"    oPara4.Format.SpaceAfter = 24    oPara4.Range.InsertParagraphAfter        'Insert a 5 x 2 table, fill it with data and change the column widths.    Set oTable = oDoc.Tables.Add(oDoc.Bookmarks("\endofdoc").Range, 5, 2)    oTable.Range.ParagraphFormat.SpaceAfter = 6    For r = 1 To 5        For c = 1 To 2            oTable.Cell(r, c).Range.Text = "r" & r & "c" & c        Next    Next    oTable.Columns(1).Width = oWord.InchesToPoints(2)   'Change width of columns 1 & 2.    oTable.Columns(2).Width = oWord.InchesToPoints(3)        'Keep inserting text. When you get to 7 inches from top of the    'document, insert a hard page break.    Pos = oWord.InchesToPoints(7)    oDoc.Bookmarks("\endofdoc").Range.InsertParagraphAfter    Do        Set oRng = oDoc.Bookmarks("\endofdoc").Range        oRng.ParagraphFormat.SpaceAfter = 6        oRng.InsertAfter "A line of text"        oRng.InsertParagraphAfter    Loop While Pos >= oRng.Information(wdVerticalPositionRelativeToPage)    oRng.Collapse (wdCollapseEnd)    oRng.InsertBreak wdPageBreak    oRng.Collapse wdCollapseEnd    oRng.InsertAfter "We're now on page 2. Here's my chart:"    oRng.InsertParagraphAfter        'Insert a chart and change the chart.    Set oShape = oDoc.Bookmarks("\endofdoc").Range.InlineShapes.AddOLEObject( _        ClassType:="MSGraph.Chart.8", FileName _        :="", LinkToFile:=False, DisplayAsIcon:=False)    Set oChart = oShape.OLEFormat.Object    oChart.charttype = 4 'xlLine = 4    oChart.Application.Update    oChart.Application.Quit    '... If desired, you can proceed from here using the Microsoft Graph     'Object model on the oChart object to make additional changes to the    'chart.    oShape.Width = oWord.InchesToPoints(6.25)    oShape.Height = oWord.InchesToPoints(3.57)        'Add text after the chart.    Set oRng = oDoc.Bookmarks("\endofdoc").Range    oRng.InsertParagraphAfter    oRng.InsertAfter "THE END."    'All done. Unload this form.    Unload Me					
  5. 按下 F5 以執行程式,然後按一下 [Command1]
程式碼完成之後,檢查為您建立的文件。文件會包含兩頁格式化的段落、表格和圖表。

回到頁首

使用範本

如果您打算用「自動化」建立全部皆為一般格式的文件,只要使用以預先格式化的範本為基礎的新文件,就能輕易地開始這個程序。搭配您的「Word 自動化」用戶端使用範本,對於從無到有地建立文件具有兩個顯著的優勢:
  • 對於在文件內格式化及放置物件,您可以有更多的控制。
  • 您可以使用較少的程式碼建立文件。
透過使用範本,您可以針對文件內的表格、段落和其他物件的位置進行微調,也可以格式化那些物件。您可以藉由「自動化」,使用程式碼建立以範本為基礎的新文件,如下所示:
oWord.Documents.Add "<Path to your template>\MyTemplate.dot"				
在範本中,您可以定義書籤,使「自動化」用戶端能夠在文件的特定位置中填入變數文字,如下所示:
oDoc.Bookmarks("MyBookmark").Range.Text = "Some Text Here"				
使用範本的另一個優點是,您可以建立和儲存想要在執行階段套用的格式化樣式,如下所示:
oDoc.Bookmarks("MyBookmark").Range.Style = "MyStyle"				
- 或 -
oWord.Selection.Style = "MyStyle"				
回到頁首
参考
如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
220607 How To Automate Microsoft Word to Perform Mail Merge from Visual Basic
285332 HOWTO:利用 Visual Basic 將 Word 自動化,以建立合併列印
285333 INFO:Word 2002 合併列印事件程式碼示範
如需詳細資訊,請造訪下列 Microsoft Developer Network (MSDN) 網站: 回到頁首 (c) Microsoft Corporation 2001. All Rights Reserved.本文內容由 Lori B. Turner, Microsoft Corporation 提供。

內容

文章識別碼:313193 - 最後檢閱時間:01/17/2007 07:14:24 - 修訂: 5.1

  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • kbautomation kbhowtomaster KB313193
意見反應