使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

有关本文的 Microsoft Visual C# .NET 版本,请参阅 316384
 

有关本文的 Microsoft Visual Basic 6.0 版本,请参阅 313193
 

摘要

本文分步介绍如何使用 Visual Basic .NET 中的自动化在 Word 中创建新文档。

示例代码

本文中的示例代码演示如何执行以下操作:

  • 插入包含文本和格式的段落。

  • 浏览和修改文档中的各种范围。

  • 插入表、设置表格式,并使用数据填充表。

  • 添加图表。

若要使用 Visual Basic .NET 中的自动化创建新的 Word 文档,请执行以下步骤:

  1. 启动 Microsoft Visual Studio .NET。 在“文件”菜单上,单击“新建”,然后单击“项目”。 在“项目类型”下,单击“Visual Basic 项目”,然后单击“模板”下的“Windows 应用程序”。 默认情况下,将创建 Form1。

  2. 添加对 Microsoft Word 对象库的引用。 为此,请按照下列步骤操作:

    1. 在“项目”菜单上,单击“添加引用”。

    2. 在“COM”选项卡上,找到“Microsoft Word 对象库”,然后单击“选择”。

      注意 Microsoft Office 2003 及更高版本的 Office 包括主互操作程序集 (PIA) 。 Microsoft Office XP 不包括 PIA,但可以下载它们。
       

    3. 在“添加引用”对话框中单击“确定”以接受你的选择。 如果收到为所选库生成包装器的提示,请单击“是”。

  3. 在“视图”菜单上,选择“工具箱”以显示“工具箱”,然后将按钮添加到 Form1。

  4. 双击 Button1。 此时将显示窗体的代码窗口。

  5. 在代码窗口中,替换以下代码

        Private Sub Button1_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles Button1.Click
    
        End Sub

    替换为:

        Private Sub Button1_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles Button1.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.
            oWord = CreateObject("Word.Application")
            oWord.Visible = True
            oDoc = oWord.Documents.Add
    
            'Insert a paragraph at the beginning of the document.
            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.
            oPara2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range)
            oPara2.Range.Text = "Heading 2"
            oPara2.Format.SpaceAfter = 6
            oPara2.Range.InsertParagraphAfter()
    
            'Insert another paragraph.
            oPara3 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\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 and italic.
            Dim r As Integer, c As Integer
            oTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("\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.Item(1).Range.Font.Bold = True
            oTable.Rows.Item(1).Range.Font.Italic = True
    
            'Add some text after the table.
            'oTable.Range.InsertParagraphAfter()
            oPara4 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\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.
            oTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("\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.Item(1).Width = oWord.InchesToPoints(2)   'Change width of columns 1 & 2
            oTable.Columns.Item(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.Item("\endofdoc").Range.InsertParagraphAfter()
            Do
                oRng = oDoc.Bookmarks.Item("\endofdoc").Range
                oRng.ParagraphFormat.SpaceAfter = 6
                oRng.InsertAfter("A line of text")
                oRng.InsertParagraphAfter()
            Loop While Pos >= oRng.Information(Word.WdInformation.wdVerticalPositionRelativeToPage)
            oRng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
            oRng.InsertBreak(Word.WdBreakType.wdPageBreak)
            oRng.Collapse(Word.WdCollapseDirection.wdCollapseEnd)
            oRng.InsertAfter("We're now on page 2. Here's my chart:")
            oRng.InsertParagraphAfter()
    
            'Insert a chart and change the chart.
            oShape = oDoc.Bookmarks.Item("\endofdoc").Range.InlineShapes.AddOLEObject( _
                ClassType:="MSGraph.Chart.8", FileName _
                :="", LinkToFile:=False, DisplayAsIcon:=False)
            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.
            oRng = oDoc.Bookmarks.Item("\endofdoc").Range
            oRng.InsertParagraphAfter()
            oRng.InsertAfter("THE END.")
    
            'All done. Close this form.
            Me.Close()
    
        End Sub
  6. 将以下代码添加到 Form1.vb 的顶部:

    Imports Word = Microsoft.Office.Interop.Word
  7. 按 F5 生成并运行程序。

代码完成后,检查为你创建的文档。 文档包含两页带格式的段落、表格和图表。

使用模板

如果使用自动化来生成全部采用通用格式的文档,则可以从使用基于预格式化模板的新文档开始该过程中获益。 将模板与 Word 自动化客户端配合使用比从无生成文档有两个显著优势:

  • 可以更好地控制整个文档中对象的格式和位置。

  • 可以使用更少的代码生成文档。

通过使用模板,可以微调文档内表格、段落和其他对象的位置,以及包括这些对象的格式设置。 通过使用自动化,可以使用如下所示的代码基于模板创建新文档:

oWord.Documents.Add "<Path to your template>\MyTemplate.dot"

在模板中,可以定义书签,以便自动化客户端可以在文档中的特定位置填充变量文本,如下所示:

oDoc.Bookmarks.Item("MyBookmark").Range.Text = "Some Text Here"

使用模板的另一个优势是,可以创建和存储希望在运行时应用的格式样式,如下所示:

oDoc.Bookmarks.Item("MyBookmark").Range.Style = "MyStyle"

-或-

oWord.Selection.Style = "MyStyle"

参考

有关使用 Visual Basic .NET 自动执行 Microsoft Word 的详细信息,请单击下面的序列号以查看 Microsoft 知识库中的文章:

301656 如何自动执行 Word 以从 Visual Basic .NET 执行邮件合并

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×