Excel批量读取Word文件中的表格内容(附完整VBA代码)
之前有一期视频给大家分享过一个实用技巧:用Excel一键读取同一文件夹内所有Word文档里的表格内容,点击“读取word数据”按钮,就能自动把每个Word里的表格信息记录,如下图如上图,本例子主要读取了三个word文件,每个文件中的表格数量分别有1个、2个、7个,表格格式如上图,本excel把每个word表格的信息读取在一行excel单元格中。很多网友私信留言想要该文件,但是鉴于该文件是含有VBA代码的宏文件,因此无法分享,这里我把相应的代码贴出来,大家可以粘贴使用,文中我会对代码进行详细的讲解,方便大家进行学习和修改使用。一、 在“读取word数据”的按钮下的代码如下:
Private Sub CommandButton1_Click()'1.----------------------------[创建word程序进程并获取word文件地址]Set wdcx = CreateObject("Word.Application") '创建word应用程序进程wddz = Dir(ThisWorkbook.Path & "\*.docx") '在当前路径下搜索扩展名为docx的文档'2.----------------------------[对excel表第一行赋值]Range("A1:I1").Interior.Color = vbGreen '红色 red,黄色 yellow,绿色 green,蓝色 blue'3.-------------------------------[Do循环打开每个word文档]T = 2 '作为excel单元格行的变量从第二行开始Set wdwd = wdcx.Documents.Open(ThisWorkbook.Path & "\" & wddz) '打开搜索到的文档N = wdcx.ActiveDocument.Tables.Count '将每个word文档中表格的数量赋值给N'4.-------------------------------[For循环将每张表中数据赋值给excel对应的单元格]With wdcx.ActiveDocument.Tables(I) '对于第I张表执行以下命令Cells(T, 1) = Left(.cell(1, 2), Len(.cell(1, 2)) - 2) '姓名Cells(T, 2) = Left(.cell(1, 4), Len(.cell(1, 4)) - 2) '性别Cells(T, 3) = Left(.cell(1, 6), Len(.cell(1, 6)) - 2) '出生年月Cells(T, 4) = Left(.cell(2, 4), Len(.cell(2, 4)) - 2) '民族Cells(T, 5) = Left(.cell(3, 2), Len(.cell(3, 2)) - 2) '婚姻状况Cells(T, 6) = Left(.cell(3, 4), Len(.cell(3, 4)) - 2) '健康状况Cells(T, 7) = Left(.cell(3, 6), Len(.cell(3, 6)) - 2) '身高Cells(T, 8) = Left(.cell(4, 2), Len(.cell(4, 2)) - 2) '户口所在地Cells(T, 9) = Left(.cell(4, 4), Len(.cell(4, 4)) - 2) '所学专业'5.-------------------------------[关闭word程序并弹出完成对话框]Set wdcx = Nothing '释放对象变量的内存二、 在“清空表格数据”的按钮下的代码如下:
Private Sub CommandButton2_Click()Range("A2:I1000").Clear '清空A2:I1000单元格以上就是咱们本excel表格按钮的所有代码,如下图,可以按图中指引在excel表中添加按钮,并将相应代码粘贴在按钮之下即可,然后点击设计模式,即可点击按钮运行,如果需要修改,则再次点击设计模式即可。三、代码解读
1、读取word数据按钮
咱们的读取word数据按钮代码主要分为5个部分,咱们接下来分段解读:第1部分:创建word程序进程并获取word文件地址
这段代码很简单,主要是在后台创建word应用程序,搜索当前路径下的所有word文件。第2部分:对excel表第一行赋值
这一段代码的主要目的就是对excel表的第一行进行赋值,并填充表格颜色为绿色。第3、4部分:3、Do循环打开每个word文档;4、For循环将每张word表中数据赋值给excel对应的单元格
咱们为什么要把3、4代码放在一起讲解呢,这是因为他们是循环嵌套结构,用DO循环嵌套了For循环,DO循环的目的是打开本地所有word文档,For循环的目的是将打开的word文件中的所有表格数据读取到excel表中,如下图:第5部分:关闭word程序并弹出完成对话框
如上图,这一段比较简单,因为咱们前面的代码在读取数据时,在后台打开了word文件,本段的主要目的是读取完word数据后,关闭后台的word程序,并弹出“完成!”的对话框。2、清空表格数据按钮
如上图,这一段就比较简单了,主要是清空A2:I1000单元格的数据。四、总结
- “读取 Word 数据” 按钮:通过 “后台启动 Word 进程→定位同路径.docx 文件→生成 Excel 表头→嵌套循环(DO 循环打开所有 Word+For 循环提取表格数据)→关闭进程并提示完成” 的流程,自动将多个 Word 中的表格数据(姓名、性别等 9 项信息)整理到 Excel;
- “清空表格数据” 按钮:一键清空 Excel 中 A2:I1000 区域的历史数据,为下次提取做准备,避免手动删除的繁琐。
- 格式适配:该excel文件需另存为.xls 或.xlsm 格式(.xlsx 不支持宏),且 Excel 与 Word 需放在同一路径,否则代码无法生效;
如果工作中需要反复从多个 Word 表格里复制人员信息,手动操作不仅耗时还容易出错 —— 这组 Excel VBA 代码正好解决了这个痛点!无需复杂编程基础,只要按步骤添加按钮、粘贴代码,就能实现两大核心功能:一键批量提取同路径下所有 Word 的表格数据(自动整理成规范 Excel 格式),还能快速清空历史数据、随时重置表格。文中不仅给了完整可复用的代码,还拆解了 “循环嵌套”“后台进程管理” 等核心逻辑,新手也能看懂原理、灵活修改(比如调整信息项、适配不同表格格式)。记得保存 Excel 文件时选择.xls 或.xlsm 格式(.xlsx 不支持宏),且 Excel 要和 Word 文件放在同一文件夹哦~ 不管是行政整理档案、HR 统计简历,还是日常处理批量表格数据,这套工具都能帮你节省大量重复工作时间。如果操作中遇到问题,可以在评论区留言,后续会针对性分享排查技巧~ 觉得实用的话,别忘了转发给需要的同事朋友呀!