你目前正处于脱机状态,正在等待 Internet 重新连接

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

针对 Office 2003 的支持已终止

Microsoft 已于 2014 年 4 月 8 日终止了针对 Office 2003 的支持。该更改已影响到您的软件更新和安全选项。 了解这一措施对于您的含义以及如何继续保持受保护状态。

概要
本文分步骤介绍如何利用 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 供稿。

属性

文章 ID:313193 - 上次审阅时间:01/17/2007 07:14:00 - 修订版本: 5.2

Microsoft Visual Basic 6.0 专业版, Microsoft Office Word 2003, Microsoft Word 2002 标准版, Microsoft Word 2000 标准版

  • kbhowtomaster kbautomation KB313193
反馈