VBA专题06-3:利用Excel中的数据自动化构建Word文档—从Excel中访问Word文档

2019-10-09 14:49:34 浏览数 (1)

要从Excel中访问Word文档,需要建立对Word的连接。建立连接有两种方法:后期绑定和前期绑定。前期绑定能够更容易地利用自动提示编写代码,更早发现编码错误,而后期绑定直到代码执行时才创建连接,在版本上更灵活。

要使用前期绑定,则需要先创建对特定应用程序类型库的引用。在VBE中,单击菜单“工具—引用”,在“引用”对话框中找到所需的类型库并选中其前面的复选框,如下图6所示,创建对“MicrosoftWord 16.0 Object Library”的引用。

图6:引用所需的库

可以使用CreateObject函数创建后期绑定,例如语句:

Set wrdApp =CreateObject("Word.Application")

创建Word对象并赋值给变量wrdApp。

如无特别说明,我们下面的示例都使用前期绑定。

打开Word文档并粘贴Excel工作表数据

下面的程序复制Excel工作表中的数据并添加到指定Word文档的末尾。

代码语言:javascript复制
Sub GetDataFromExcelToWord()
   Dim wrdApp As Word.Application
    '复制Excel工作表数据
   Worksheets("Sheet1").Range("A1:B3").Copy
    '创建与Word的连接
   Set wrdApp = New Word.Application
   With wrdApp
        '打开指定的Word文档
       .Documents.Open Filename:=ThisWorkbook.Path &"myDatas.docx"
        '在文档末尾添加新段落并粘贴数据
       With .Selection
            .EndKey Unit:=wdStory
            .TypeParagraph
            .Paste
       End With
        '保存文档
       .ActiveDocument.Save
        '退出Word
       .Quit
   End With
    '释放对象变量
   Set wrdApp = Nothing
End Sub

在已经打开的Word文档中粘贴Excel数据

下面的代码复制工作表数据并粘贴到当前Word文档的末尾:

代码语言:javascript复制
Sub CopyDataToOpenWord()
   Dim wrdApp As Word.Application
    '复制Excel工作表数据
   Worksheets("Sheet1").Range("A1:B3").Copy
    '创建对已打开的Word文档的连接
   Set wrdApp = GetObject(, "Word.Application")
    '在文档末尾添加段落并粘贴数据
   With wrdApp.Selection
       .EndKey Unit:=wdStory
       .TypeParagraph
       .Paste
   End With
    '释放对象变量
   Set wrdApp = Nothing
End Sub

代码中GetObject函数忽略了第一个参数,这将直接访问当前打开的活动Word文档。

创建新的Word文档并粘贴Excel数据

下面的代码将创建一个新的Word文档将添加从Excel中复制的数据:

代码语言:javascript复制
Sub CopyDataToWord()
   Dim wrdApp As Word.Application
    '复制Excel工作表数据
   Worksheets("Sheet1").Range("A1:B3").Copy
   On Error Resume Next
    '试图创建与已打开的Word文档的连接
   Set wrdApp = GetObject(, "Word.Application")
    '如果连接失败,则打开Word应用程序
   If wrdApp Is Nothing Then
       Set wrdApp = GetObject("", "Word.Application")
   End If
   On Error GoTo 0
    '创建新文档
   With wrdApp
       .Documents.Add
       .Visible = True
   End With
    '在文档末尾添加段落并粘贴数据
   With wrdApp.Selection
       .EndKey Unit:=wdStory
       .TypeParagraph
       .Paste
   End With
    '释放对象变量
   Set wrdApp = Nothing
End Sub

代码中,GetObject函数的第一个参数为零长度的字符串,将创建一个新的Word实例。

0 人点赞