创建excel服务失败_VBA专题063:利用Excel中的数据自动化构建Word文档—从Excel中访问Word文档...

学习Excel技术,关注微信公众号:

excelperfect

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

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

f46798f6f32803409ef303fc13324626.png

图6:引用所需的库

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

Set wrdApp =CreateObject("Word.Application")

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

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

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

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

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文档的末尾:

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中复制的数据:

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

b5726a362f16a28a7e50181229b8538a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值