前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Excel应用实践20:使用Excel中的数据自动填写Word表格

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

作者头像
fanjy
发布于 2019-08-30 13:14:59
发布于 2019-08-30 13:14:59
7.5K30
代码可运行
举报
文章被收录于专栏:完美Excel完美Excel
运行总次数:0
代码可运行

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

图1

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

图2

解决思路

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

图3

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

图4

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

编写代码

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码的图片版如下:

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

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

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

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

评论
登录后参与评论
3 条评论
热度
最新
友友 运行过程出现了2个错误,424错误 、服务器运行失败错误,网上解决办法都试过了,还是无法解决。
友友 运行过程出现了2个错误,424错误 、服务器运行失败错误,网上解决办法都试过了,还是无法解决。
回复回复点赞举报
确实一行就会报错,哪里的问题呢?
确实一行就会报错,哪里的问题呢?
回复回复点赞举报
好像只能跑完一行excel记录就会报错1004
好像只能跑完一行excel记录就会报错1004
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
VBA专题06-6:利用Excel中的数据自动化构建Word文档—Excel与Word整合示例3
从前面的学习中,我们已经学会了使用书签将Excel中提取的数据放置到文档中指定的位置。下面的示例演示如何运用这些技巧,使用Excel分析得来的数据来生成多个报表。
fanjy
2019/10/09
2.3K0
VBA专题06-6:利用Excel中的数据自动化构建Word文档—Excel与Word整合示例3
VBA专题06-4:利用Excel中的数据自动化构建Word文档—Excel与Word整合示例1
1.创建Word文档模板,用来作为数据分析结果发布平台。在模板中,在每个要插入数据的位置定义书签。当然,对于只导入一两个数据表来说,这一步可选。
fanjy
2019/10/09
5.8K0
VBA专题06-4:利用Excel中的数据自动化构建Word文档—Excel与Word整合示例1
VBA专题06-5:利用Excel中的数据自动化构建Word文档—Excel与Word整合示例2
使用书签,可以方便地替换书签处的文本。例如,在下图9中的模板Bookmarks.dotx相应的文本位置定义了书签。
fanjy
2019/10/09
1.8K0
VBA专题06-5:利用Excel中的数据自动化构建Word文档—Excel与Word整合示例2
Office整合应用技术02:在Word文档中自动获取Excel数据
本文介绍的技术需要先在Word文档中设置书签,Excel中的数据将会被放置在这个书签处。这是在Word中获取并放置Excel数据的一个基本技术,下面的示例展示了其运行原理,可供进一步拓展应用参考。
fanjy
2020/04/18
2.9K0
Excel应用实践14:合并多个工作簿中的数据—示例3
要合并工作簿的情形有许多种,但最终的目的只有一条,将繁锁的手工操作自动化,让程序快速帮助我们完成这些重复的工作。
fanjy
2019/07/19
1.6K0
[网友投稿] Excel数据批量写入Word
前言:这是 VBA说 微信公众号借助我的这个平台给大家分享的一篇关于Excel与Word交互的文章,希望对大家有帮助。在这里,欢迎大家投稿,与更多的人分享有用的知识。
fanjy
2019/10/09
3.5K0
[网友投稿] Excel数据批量写入Word
VBA专题06-1:利用Excel中的数据自动化构建Word文档—了解Word对象模型
前言:将Excel与Word合理地整合交互,往往能够获得很好的效果,极大地提高办公自动化效率。例如,将数据存放在Excel工作表中,Word文档按需自动化提取其中的特定数据;或者使用Excel来分析数据,然后以Word文档来呈现分析结果,等等。本专题先讲解了Word对象模型中常用的对象,让大家先熟悉VBA是如何操控Word文档的,有了一定的Word VBA基础知识后,再通过详细的示例演示Excel与Word交互的技术。
fanjy
2019/10/09
3.1K0
VBA专题06-1:利用Excel中的数据自动化构建Word文档—了解Word对象模型
VBA实例01:复制多个Excel表到Word
有些时候,需要将多个Excel表复制到Word文档中指定的位置。一般可以使用通常的复制/粘贴操作,然而如果表很多的话,VBA就派上用场了。
fanjy
2020/11/24
4.7K0
VBA实例01:复制多个Excel表到Word
再也不用复制粘贴了!自动读取Word文件并写入Excel
在做数据分析时,虽然操作docx并不是常用操作,但有些时候,数据分析师拿到的文件是docx或doc的Word文件,尤其是对数据具有至关重要的数据字典。接下来以一个数据字典为例来介绍下python-docx读取Word文件的基本操作。并将Word中的表格内容写入excel中。
数据STUDIO
2021/06/24
2.7K0
Excel应用实践10:合并多个工作簿中的数据
我有超过50个具有相同格式的Excel文件,它们的列标题相同,并且都放置在同一文件夹,有什么快速的方法将它们合并到一个单独的Excel文件的一个工作表中?
fanjy
2019/07/19
2.3K0
Excel应用实践04:分页单独打印Excel表中的数据
在实际工作中,我们经常会遇到想将工作表中的数据(如下图1所示的“数据”工作表)导入到固定的表格(如下图2所示)中并打印。
fanjy
2019/07/19
1.4K0
Excel应用实践03:使用Excel进行个人计划执行记录与统计分析
一转眼,2019年已至4月,自从年初立下flag后,便努力朝着实现它的方向奔跑。有些执行得很好,比如每天更新完美Excel微信公众号,坚持每天学习,而有些则还没有开始。是时候该督促自已全面开始了!于是,制作了一个简单的计划执行情况统计分析表,加上少量的VBA代码,以方便自已每周检视计划的执行情况,提醒自已哪些没做,要赶快补上。
fanjy
2019/07/19
1.9K0
Excel应用实践03:使用Excel进行个人计划执行记录与统计分析
EXCEL VBA语句集300
        定制模块行为 (1) Option Explicit ‘强制对模块内所有变量进行声明 Option Private Module ‘标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示  Option Compare Text ‘字符串不区分大小写  Option Base 1 ‘指定数组的第一个下标为1 (2) On Error Resume Next ‘忽略错误继续执行VBA代码,避免出现错误消息 (3) On Error GoTo ErrorHandler ‘当错误发生时跳转到过程中的某个位置 (4) On Error GoTo 0 ‘恢复正常的错误提示 (5) Application.DisplayAlerts=False ‘在程序执行过程中使出现的警告框不显示 (6) Application.ScreenUpdating=False ‘关闭屏幕刷新 Application.ScreenUpdating=True ‘打开屏幕刷新 (7) Application.Enable.CancelKey=xlDisabled ‘禁用Ctrl+Break中止宏运行的功能  工作簿 (8) Workbooks.Add() ‘创建一个新的工作簿 (9) Workbooks(“book1.xls”).Activate ‘激活名为book1的工作簿 (10) ThisWorkbook.Save ‘保存工作簿 (11) ThisWorkbook.close ‘关闭当前工作簿 (12) ActiveWorkbook.Sheets.Count ‘获取活动工作薄中工作表数 (13) ActiveWorkbook.name ‘返回活动工作薄的名称 (14) ThisWorkbook.Name ‘返回当前工作簿名称 ThisWorkbook.FullName ‘返回当前工作簿路径和名称 (15) ActiveWindow.EnableResize=False ‘禁止调整活动工作簿的大小 (16) Application.Window.Arrange xlArrangeStyleTiled ‘将工作簿以平铺方式排列 (17) ActiveWorkbook.WindowState=xlMaximized ‘将当前工作簿最大化  工作表 (18) ActiveSheet.UsedRange.Rows.Count ‘当前工作表中已使用的行数 (19) Rows.Count ‘获取工作表的行数(注:考虑向前兼容性) (20) Sheets(Sheet1).Name= “Sum” ‘将Sheet1命名为Sum (21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) ‘添加一个新工作表在第一工作表前 (22) ActiveSheet.Move After:=ActiveWorkbook. _ Sheets(ActiveWorkbook.Sheets.Count) ‘将当前工作表移至工作表的最后 (23) Worksheets(Array(“sheet1”,”sheet2”)).Select ‘同时选择工作表1和工作表2 (24) Sheets(“sheet1”).Delete或 Sheets(1).Delete ‘删除工作表1 (25) ActiveWorkbook.Sheets(i).Name ‘获取工作表i的名称 (26) ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines ‘切换工作表中的网格线显示,这种方法也可以用在其它方面进行相互切换,即相当于开关按钮 (27) ActiveWindow.DisplayHeadings=Not ActiveWindow.DisplayHeadings ‘切换工作表中的行列边框显示 (28) ActiveSheet.UsedRange.FormatConditions.Delete ‘删除当前工作表中所有的条件格式 (29) Cells.Hyperlinks.Delete ‘取消当前工作表所有超链接 (30) ActiveSheet.PageSetup.Orientation=xlLandscape 或ActiveSheet.PageSetup.Orientation=2 ‘将页面设置更改为横向 (31) ActiveSheet.PageSetup.RightFooter=ActiveWorkbook.FullName ‘在页面设置的表尾中输入文件路径 ActiveSheet.PageSetup.Le
Tony老师
2020/03/05
2K0
Excel学习----一键创建相应“惟一性”的文件,再筛选数据并写入相应的文件中
领导是要求是:有这样的一个表格,请按“模板”文件,建立面试级别的几个文件,并筛选出相应的内容填写到各工作簿中,
哆哆Excel
2022/10/25
8450
Excel学习----一键创建相应“惟一性”的文件,再筛选数据并写入相应的文件中
Excel应用实践19:根据工作表某列中的值从另一工作簿中获取数据
在下图1所示的工作簿Data.xlsx的工作表Sheet1中,存放着待使用的数据。
fanjy
2019/08/27
19.1K0
Excel应用实践19:根据工作表某列中的值从另一工作簿中获取数据
VBA实用小程序:将Excel中的内容输入到Word
将Excel数据输入到Word文档并不难,但这会破坏书签,如果你在对Word文档进行了大量修改后发现想要重新从Excel中输入数据,那可能会令人沮丧。我想要一个可以根据需要经常重复的将Excel数据输入到Word,这意味着在复制完成后要重新创建书签。
fanjy
2023/02/14
2.2K0
ExcelVBA汇总多工作簿中指定工作表到新工作簿
哆哆Excel
2023/09/09
4780
ExcelVBA汇总多工作簿中指定工作表到新工作簿
VBA对象变量
大家好,前面介绍了vba中两个主要的对象,单元格range对象和工作表worksheet对象,以及它们的属性和方法。
无言之月
2019/10/13
2K0
VBA一键提取4个excel社保文件的指定单元格
【问题】平时提取4个文件的数据时,是打开一个文件,复制数据,再打开一个文件,复制数据,再打开一个文件,复制数据,再打开一个文件,复制数据,用时要30分以上,于是我总想能不能快一点,今天写个代码来完成这个工作用时1.69秒。
哆哆Excel
2022/10/31
5270
python自动化系列之使用win32com操作Excel
win32com 模块主要为 Python 提供调用 windows 底层组件对 word 、Excel、PPT 等进行操作的功能;
JQ实验室
2022/07/15
5.8K0
推荐阅读
相关推荐
VBA专题06-6:利用Excel中的数据自动化构建Word文档—Excel与Word整合示例3
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文