前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA专题06-3:利用Excel中的数据自动化构建Word文档—从Excel中访问Word文档

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

作者头像
fanjy
发布2019-10-09 14:49:34
2.9K0
发布2019-10-09 14:49:34
举报
文章被收录于专栏:完美Excel完美Excel

要从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实例。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档