如何利用 Visual Basic 使 Microsoft Word 自动创建新文档

文章翻译 文章翻译
文章编号: 313193 - 查看本文应用于的产品
展开全部 | 关闭全部

概要

本文分步骤介绍如何利用 Visual Basic 的自动化功能在 Word 中创建新文档。

示例代码

本文中的示例代码将演示如何完成以下任务:
  • 插入包含文本和格式的段落。
  • 浏览和修改文档中的不同范围。
  • 插入表格、设置表格格式并在表格中填充数据。
  • 添加图表。
若要利用 Visual Basic 的自动化功能创建新 Word 文档,请按照下列步骤操作:
  1. 在 Visual Basic 中,创建一个新的标准 EXE 项目。默认情况下会创建 Form1。
  2. 在“项目”菜单上,选择“引用”。选择 Word 的对象库,然后单击“确定”。

    下面列出了基于所使用的 Word 版本的对象库:
    1. 对于 Microsoft Word 2000 -“Microsoft Word 9.0 对象库”
    2. 对于 Microsoft Word 2002 -“Microsoft Word 10.0 对象库”
    3. 对于 Microsoft Office Word 2003 -“Microsoft Word 11.0 对象库”
  3. 向 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 如何通过 Visual Basic 使 Microsoft Word 自动执行邮件合并
285332 如何利用 Visual Basic 自动化 Word 以创建邮件合并
285333 INFO:Word 2002 邮件合并事件代码演示
有关更多信息,请访问下面的 Microsoft Developer Network (MSDN) 网站:
Microsoft Office Development with Visual Studio(使用 Visual Studio 进行 Microsoft Office 开发)
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx

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

One More Word(补充说明)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnofftalk/html/office12072000.asp
(c) Microsoft Corporation 2001,保留所有权利。由 Microsoft Corporation 的 Lori B. Turner 供稿。

属性

文章编号: 313193 - 最后修改: 2007年1月17日 - 修订: 5.2
这篇文章中的信息适用于:
  • Microsoft Visual Basic 6.0 专业版
  • Microsoft Office Word 2003
  • Microsoft Word 2002 标准版
  • Microsoft Word 2000 标准版
关键字:?
kbhowtomaster kbautomation 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