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

文章翻譯 文章翻譯
文章編號: 313193 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

結論

本文將逐步告訴您,如何從 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) 網站:
利用 Visual Studio 開發 Microsoft Office 程式 (英文)
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx

Office 中的 Word (英文)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnofftalk/html/office112000.asp

深入探討 Word (英文)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnofftalk/html/office12072000.asp
(c) Microsoft Corporation 2001. All Rights Reserved.本文內容由 Lori B. Turner, Microsoft Corporation 提供。

屬性

文章編號: 313193 - 上次校閱: 2007年1月17日 - 版次: 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
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com