具体需求

提取Word文档中特定信息到Excel,Word文档结构如下(需提取内容已经用黄色标识):

提取思路

一个文档中,有多个这样的缴费清单,我们要提取的是一些固定关键字之后的数据。

所以,我们循环文档的所有段落,如果包含【物业管理清册】关键字,则获取他的下两行数据,并且提取关键字。

具体代码

Sub 循环打开工作簿()On Error GoTo 1k = 1Rows("2:65536").Clear '清除上次数据Application.DisplayAlerts = FalseApplication.ScreenUpdating = FalseApplication.AskToUpdateLinks = Falsepth = Application.GetOpenFilename("文件(*.doc*),*.doc*", , "请选择文件", , False) '打开doc后缀的文档If pth = "False" Then Exit Sub '如果用户选择了取消,直接退出Set doc = CreateObject("word.application")                 '创建Word对象doc.Visible = True '显示word主程序Set wd = doc.Documents.Open(pth) '打开word文档,赋值给对象变量wdFor Each tbl In wd.tables '删除文档中所有的表格,因为表格过多,影响循环段落的效率。tbl.DeleteNextFor i = 1 To wd.Paragraphs.Count - 2 '循环到倒数第三段a = wd.Paragraphs(i).Range.Text '获取这几段的内容,分别赋值给a、b、c变量b = wd.Paragraphs(i + 1).Range.Textc = wd.Paragraphs(i + 2).Range.TextIf InStr(a, "物业管理费缴费清册") Then '开始取数据k = k + 1Cells(k, 1) = k - 1                                '序号Cells(k, 2) = l(Split(Split(b, ":")(1), "面积")(0))  '楼号楼室Cells(k, 3) = l(Split(Split(b, "面积")(1), "㎡")(0))  '面积Cells(k, 4) = l(Split(Split(c, "姓名")(1), "电话")(0)) '姓名Cells(k, 5) = l(Split(Split(c, "电话")(1), "月缴费")(0)) '电话Cells(k, 6) = l(Split(Split(c, "月缴费")(1), "元")(0)) '月缴费Cells(k, 7) = l(Split(Split(c, "年缴费")(1), "元")(0)) '年缴费End IfNext
1:     wd.Close False '关闭原始文档,并且不保存doc.Quit '关闭Word主程序Application.DisplayAlerts = TrueApplication.ScreenUpdating = TrueApplication.AskToUpdateLinks = TrueIf Err.Number <> 0 ThenMsgBox Err.Description & vbCrLf & "提取出现错误,联系作者解决!"End IfMsgBox "提取完成!"
End Sub
Function l(s)l = Replace(s, ":", "") '去除冒号自定义函数
End Function

知识点

  • Excel创建Word程序对象
这里使用后期绑定的方式创建Word主程序,并且新建一个word文档。向Word文档中写入内容123,最后另存为本工作簿路径下的一个文档。'后期绑定
Sub 操作word1()                                              '打开Word写入文字Set doc = CreateObject("word.application")                 '创建Word对象Set wd = doc.Documents.Adddoc.Visible = Truestrr = 123                                                 '需要导入的字符串.TypeText strr.TypeParagraphwd.SaveAs ThisWorkbook.Path & "\例子.docx"doc.Quit                                                   '关闭程序
End Sub
  • Split函数

关于Split函数,可以看之前的两篇文章,都有详细的讲解。

  • Split函数应用|分离商品和数量
  • 字符串函数Split的妙用
  • GetOpenFilename函数

想弹出对话框,打开某些特定后缀的文件,就用GetOpenFilename。具体用法可参见之前的文章。获取文件全路径(一)GetOpenFilename 方法

常用的代码是以下的模板:

'允许选择多个文件

Sub 循环打开工作簿()Application.DisplayAlerts = FalseApplication.ScreenUpdating = FalseApplication.AskToUpdateLinks = Falsepth = Application.GetOpenFilename("文件(*.xls*),*.xls*", , "请选择文件", , True)If IsArray(pth) = False Then Exit SubFor i = 1 To UBound(pth)Set wb = Workbooks.Open(pth(i))'########汇总数据的核心操作##########wb.Close FalseNextApplication.DisplayAlerts = TrueApplication.ScreenUpdating = TrueApplication.AskToUpdateLinks = True
End Sub

'只允许选择一个文件

Sub 循环打开工作簿()Application.DisplayAlerts = FalseApplication.ScreenUpdating = FalseApplication.AskToUpdateLinks = Falsepth = Application.GetOpenFilename("文件(*.xls*),*.xls*", , "请选择文件", , False)Set wb = Workbooks.Open(pth)'########汇总数据的核心操作##########wb.Close FalseApplication.DisplayAlerts = TrueApplication.ScreenUpdating = TrueApplication.AskToUpdateLinks = True
End Sub

更多更详细的WordVBA知识,详见《WordVBA精讲课》

如何将word中的数据批量提取到excel中?相关推荐

  1. 关于将txt文件中的数据批量添加到excel中,显示不全的问题

    问题:当不同的txt文件是由大量的数据列组成时(数据以分隔符或空格隔开的情况),若合并其中的几个txt文件,需要将其保存到excel表格中进行合并,但是,当数据小数点位数比较多时,由于电脑及软件的默认 ...

  2. 将多个Word表格中的指定值提取到Excel中,方便查看、统计、汇总。Word精灵

    01需求说明 图1是简历样,简历中各项数据都放在表格中.现要求将图2中所有简历表的姓名.性别.出生日期.学历.籍贯.民族等等信息逐一提取出来,整理到Excel中,方便查看及汇总. 图1 简历表 图2 ...

  3. PHP将excel文件中的数据批量导入到数据库中

    2019独角兽企业重金招聘Python工程师标准>>> 这几天在做项目时,遇到了需要批量导入数据的情况,用户将excel表格提交后,需要我们后台这边将excel表格信息中的内容全部插 ...

  4. php excel批量导入,PHP将excel文件中的数据批量导入到数据库中

    这几天在做项目时,遇到了需要批量导入数据的情况,用户将excel表格提交后,需要我们后台这边将excel表格信息中的内容全部插入到数据表中.当然,前提是用户给我们的excel表格中的信息必须和我们表中 ...

  5. java 从excel中读取数据_java如何从excel中读出数据

    package myexceltest; import jxl.*; import java.io.*; import jxl.write.*; /** * java读取Excel表格,拷贝.更新Ex ...

  6. 如何将.TXT中的数据正确的导入excel表中

    将.txt中的文本:01 03 20 10 6C 19 22 10 6D 10 6B 10 6B 10 6B 10 6B 10 6A 10 6A 10 6A 10 6B 10 6B 10 6B 10 ...

  7. word(2010)宏使用-批量提取word数据

    word 2010 宏的使用 Word中对宏的定义 Word宏的优缺点 Word宏运用实例---批量提取word数据 结语 Word中对宏的定义 Microsoft Word中对宏定义为:" ...

  8. word录入表单数据 java 导入系统,java导入excel | 怎么把excel中的数据批量导入到word中的表格中...

    用javascript怎么实现把excel中的数据批量导入到数据库表中 这个js不能直接实现吧 我们程序用到 先读取excel内容转换成数组 然后放到页面上 再提交表单 储存 MySql如何批量添加数 ...

  9. matlab如何在word中插入多个表格,怎么把excel中的数据批量导入到word中的表格中《不同表格间的数据导入》...

    如何将excel表格中大量数据导入matlab中并作图 工具:MATLAB.office excel 将待导入的矩阵结构据录入Excel中,录入时注意行列原矩阵一一对应. 录入完以后保存数据,为了后续 ...

最新文章

  1. python 中遍历表时候,当指定的表的长度超过实际长度时候,实际遍历的长度以表实际长度为准,不会发生越界,如下
  2. linux--select
  3. linux无法跳转到home,linux No directory, logging in with HOME=/
  4. Android 多屏幕适配 dp和px的关系
  5. 操作系统(3)-线程的六大状态、基于代码实战的线程创建及六个常用方法
  6. linux下载gcc yarm,修改Yarn的全局安装和缓存位置
  7. 还在担心快应用没流量?全场景新玩法来袭!
  8. Beta阶段冲刺第一天
  9. 下载并安装mercurial/hg
  10. 时间序列数据处理2——时间序列聚类算法
  11. java中正则验证邮箱手机格式
  12. 2021年美妆护肤行业电商营销报告
  13. linux操作 防火墙
  14. JS实现统一社会信用代码的效验(组织机构代码效验)
  15. LS1028A make 错误 sudo apt update 错误: Error in `appstreamcli‘
  16. Chino with Equation 不定方程
  17. 【华为云技术分享】最终,我决定将代码迁出x86架构!
  18. 四种两轮差速驱动机器人底盘特性分析
  19. 阿里从来不只属于马云,马云永远属于阿里
  20. HAProxy- 日志管理

热门文章

  1. Ubuntu使用超级用户权限
  2. 川希:如何打造个人IP让别人信任,主动追着我们付钱!
  3. 用 VB 打开任意盘(硬盘/U盘/光盘)的文件.
  4. 红米k40夜景拍照怎么设置(夜景模式开启方法)
  5. 凛冬将至服务器维护,《权力的游戏 凛冬将至》11月合服公告 “数据互通计划”开启公告...
  6. 网络安全高级从业者应该掌握哪些知识
  7. win如何U盘制作启动系统
  8. HTML 页面禁止打印
  9. JavaWeb---Tomcat---Servlet
  10. 63.深度解密网络项目一:不用PS也能从事专业的老照片翻新修复