专栏首页完美ExcelExcel应用实践20:使用Excel中的数据自动填写Word表格

Excel应用实践20:使用Excel中的数据自动填写Word表格

我在Excel工作表中存放着数据,如下图1所示。

图1

我想将这些数据逐行自动输入到Word文档的表格中并分别自动保存,Word文档表格如下图2所示,文档名为“datafromexcel.docx”。

图2

解决思路

首先,将需要自动填写的datafromexcel.docx文档作为模板,并对每个要填写的位置放置书签。例如,将光标移至上图2所示表格中姓名后的空格,单击功能区选项卡“插入——书签”,在弹出的“书签”对话框中输入书签名“姓名”,如下图3所示。

图3

同样,在表的其它空格中插入相应的书签,结果如下图4所示。

图4

在Excel工作表中,将相应数据所在的单元格命名,名称与要填写的上图4中表的书签名相同。这就需要我们先命名单元格,待将相应的数据输出到Word表中后,再删除这些名称。然后,移至下一行,再进行单元格命名,并将相应的数据输出到Word表中,再删除这些名称。如此反复,直至工作表每行数据均创建了Word文档。

编写代码

按照上述思路,在存放数据的Excel工作簿中编写代码:

Sub ExportDataToWord()
    '变量声明
    Dim objWord As Object,docWord As Object
    Dim wb As Workbook
    Dim xlName As Name
    Dim Path As String
    Dim lLastRow As Long
    Dim i As Long
    '下面两个变量可修改为实际工作簿和路径
    '设置数据所在工作簿
    Set wb = ActiveWorkbook
    '要输入数据的Word模板
    Path = wb.Path & "\datafromexcel.docx"
    '错误处理
    On Error GoTo ErrorHandler
    '工作簿工作表中最后数据行行号
    lLastRow =wb.Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
    '遍历工作表数据行
    '从中取出数据填充Word文档
    For i = 2 To lLastRow
        '命名名称
        With wb.Worksheets("Sheet1")
           .Range("A" & i).Name = Range("A1").Value
           .Range("B" & i).Name = Range("B1").Value
           .Range("C" & i).Name = Range("C1").Value
           .Range("D" & i).Name = Range("D1").Value
        End With
        '创建新的Word实例
        Set objWord = CreateObject("Word.Application")
        '错误处理
        On Error GoTo ErrorHandler
        '打开Word文档
        Set docWord = objWord.Documents.Add(Path)
        '遍历当前工作簿中的名称
        For Each xlName In wb.Names
            '如果在Word文档中存在与名称相同的书签
            If docWord.Bookmarks.Exists(xlName.Name) Then
                '将工作表名称的值放入书签所在位置
               docWord.Bookmarks(xlName.Name).Range.Text = Range(xlName.Value)
            End If
        Next xlName
        With objWord
            '激活并显示Word文档
            .Visible = True
           .ActiveWindow.WindowState = 0
            .Activate
            '以列A中相应单元格中的数据命名并保存Word文档
           .ActiveDocument.SaveAs wb.Path & "\" & Range("A" & i).Value & ".docx"
            '退出Word
            .Application.Quit
        End With
        '释放对象
        Set objWord = Nothing
        '删除名称
       Names(Range("A1").Value).Delete
       Names(Range("B1").Value).Delete
       Names(Range("C1").Value).Delete
       Names(Range("D1").Value).Delete
    Next i
     '释放Word对象并退出过程
ErrorExit:
    Set objWord = Nothing
    Exit Sub
    '错误处理
ErrorHandler:
    If Err Then
        MsgBox "错误号: " & Err.Number &"; 出问题了."
        If Not objWord Is Nothing Then
            objWord.QuitFalse
        End If
        Resume ErrorExit
    End If
End Sub

代码中已经给出了详细的注释,有兴趣的朋友可以仔细体会。

运行代码

在运行代码前,要保证代码所在的工作簿与Word文档模板datafromexcel.docx在同一文件夹中。运行ExportDataToWord过程,在文件夹中会生成以列A中的姓名为名称的Word文档,如下图5所示。

图5

打开任一文档,结果都是填写好了的表格,如下图6所示。

图6

代码的图片版如下:

本文分享自微信公众号 - 完美Excel(excelperfect),作者:fanjy

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

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

    要从Excel中访问Word文档,需要建立对Word的连接。建立连接有两种方法:后期绑定和前期绑定。前期绑定能够更容易地利用自动提示编写代码,更早发现编码错误,...

    fanjy
  • [网友投稿] Excel数据批量写入Word

    前言:这是 VBA说 微信公众号借助我的这个平台给大家分享的一篇关于Excel与Word交互的文章,希望对大家有帮助。在这里,欢迎大家投稿,与更多的人分享有用的...

    fanjy
  • VBA小技巧04:使用VBA获取能够打开指定文件的EXE程序

    这是一个很有趣的技巧!可以通过你给定的文件名来获取计算机中可以打开该文件的EXE程序,即可执行程序。有时候,我们可能真的需要找到可以打开指定文件名的EXE程序,...

    fanjy
  • Xilinx FPGA Partial Reconfiguration 部分重配置 详细教程

      Partial Reconfiguration(部分重配置)在现在的FPGA应用中越来越常见,我们这次的教程以Project模式为例来说明部分重配置的操作过...

    猫叔Rex
  • 海思总裁致团队公开信对技术人员的启示

    印象中我好像从来没有在公众号发过任何非技术文章(软文除外-对不起大家啦),也从未说过我对技术的态度与思考,今天华为海思总裁致团队员工的一封信在朋友圈刷屏了,作为...

    OpenCV学堂
  • VBA小技巧04:使用VBA获取能够打开指定文件的EXE程序

    这是一个很有趣的技巧!可以通过你给定的文件名来获取计算机中可以打开该文件的EXE程序,即可执行程序。有时候,我们可能真的需要找到可以打开指定文件名的EXE程序,...

    fanjy
  • 如何使用Sphinx记录Python代码【Programming(Python)】

    文档是开发过程的最佳组成部分。 Sphinx与Tox一起,使得它易于编写,易于欣赏。

    Potato
  • python之路-day1-while循环

    while Thue: (条件为真无限循环)  break(跳出循环) 猜年龄: #Author:zww age_of_jay = 40 count = 0 w...

    用户1679793
  • 1-物联网开发标配方案(预期方案使用说明和演示)

    实现的功能:WIFI模块和手机APP连接MQTT服务器,单片机采集的温湿度数据通过WIFI远程发送给APP显示,APP远程控制单片机的LED亮灭

    杨奉武
  • 解决java compiler level does not match the version of the installed java project facet

    java compiler level does not match the version of the installed java project fa...

    wust小吴

扫码关注云+社区

领取腾讯云代金券