ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4511|回复: 12

[求助] 提取多个Word文档指定位置内容到Excel表格

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-2-19 17:02 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
有上千个Word文档,格式一模一样。我看了很多论坛案例,试着修改了代码,可是还是得不到想要的结果,各位大神请帮忙写一下VBA代码,感谢感谢。

效果图

效果图

样板

样板

鉴定副本.rar

23.86 KB, 下载次数: 113

TA的精华主题

TA的得分主题

发表于 2021-2-19 17:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
得分析规律,再写vba吧?。。。。。。。。。。。。。。。。。

TA的精华主题

TA的得分主题

发表于 2021-2-19 20:49 | 显示全部楼层
  1. Sub 打开Word()
  2. Application.ScreenUpdating = False
  3. Set doc = CreateObject("word.application")
  4. Set wok = ThisWorkbook
  5. f = Dir(ThisWorkbook.Path & "\*.doc")
  6. x = 7
  7. Do While f <> ""
  8.     Set wd = doc.documents.Open(ThisWorkbook.Path & "" & f)
  9.     doc.Visible = True
  10.     With wok.Sheets(1)
  11.         Cells(x, 1) = wd.Paragraphs(2).Range.Text
  12.         Cells(x, 2) = Split(wd.Paragraphs(4).Range.Text, ":")(1)
  13.         Cells(x, 3) = Split(wd.Paragraphs(6).Range.Text, ":")(1)
  14.         Cells(x, 4) = Split(wd.Paragraphs(5).Range.Text, ":")(1)
  15.         m = InStr(wd.Paragraphs(7).Range.Text, ")")
  16.         n = InStr(wd.Paragraphs(7).Range.Text, "(")
  17.         Cells(x, 5) = Mid(wd.Paragraphs(7).Range.Text, n + 1, m - 1)
  18.         Cells(x, 6) = Split(wd.Paragraphs(9).Range.Text, ":")(1)
  19.         Cells(x, 7) = wd.Paragraphs(14).Range.Text
  20.     x = x + 1
  21.     End With
  22.     f = Dir
  23.     wd.Close False
  24. Loop
  25. doc.Quit
  26. [e:f].Replace "。", ""
  27. [d:g].Replace " ", ""
  28. [e:f].Replace ")", ""
  29. MsgBox "完成!"
  30. Application.ScreenUpdating = False
  31. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2021-2-20 14:12 | 显示全部楼层
练练手

  1. Public Sub wang_way()
  2.     '作者  DG_NextSeven
  3.     '日期  2021-02-20
  4.     Dim Wb As Workbook
  5.     Dim Sht As Worksheet
  6.     Set Wb = Application.ThisWorkbook
  7.     Set Sht = Wb.Worksheets(1)
  8.     Sht.UsedRange.Offset(1).Clear
  9.     FolderPath = Wb.Path & ""
  10.     filepaths = FsoGetFiles(FolderPath, "*.doc*")
  11.     If filepaths(1) = "NULL" Then Exit Sub
  12.     Dim wdApp As Object
  13.     Dim doc As Object
  14.     Set Regex = CreateObject("VBScript.RegExp")
  15.     With Regex
  16.         .Global = True
  17.         .Pattern = "(中劳鉴2020年\d+号)(?:[\d\D]*?)被鉴定人:([\d\D]+?)\s*?\r(?:[\d\D]*?)身份证号:([\d\D]+?)\s*?\r(?:[\d\D]*?)工作单位:([\d\D]+?)\s*?\r(?:[\d\D]*?)" & _
  18.             "见《工伤认定决定书》(([\d\D]+?))(?:[\d\D]*?)鉴定结论为:([\d\D]+?)。(?:[\d\D]*?)\D(\d+年\d+月\d+日)"
  19.         .MultiLine = False
  20.         '.IgnoreCase = False
  21.     End With
  22.     Set wdApp = CreateObject("word.application")
  23.     i = 1
  24.     For Each filepath In filepaths
  25.         Set doc = wdApp.documents.Open(filepath)
  26.         s = doc.Range.Text
  27.         If Regex.Test(s) Then
  28.             i = i + 1
  29.             Set Mh = Regex.Execute(s)
  30.             j = 0
  31.             For Each sb In Mh(0).submatches
  32.                 j = j + 1
  33.                 Sht.Cells(i, j).Value = "'" & sb
  34.             Next sb
  35.         End If
  36.         doc.Close
  37.     Next
  38.     wdApp.Quit
  39.     Set Wb = Nothing
  40.     Set Sht = Nothing
  41.     Set Regex = Nothing
  42.     Set wdApp = Nothing
  43.     Set doc = Nothing
  44.     Set Mh = Nothing
  45.     MsgBox "提取完成!"
  46. End Sub
  47. Function FsoGetFiles(ByVal FolderPath As String, ByVal Pattern As String, Optional ComplementPattern As String = "") As String()
  48.     Dim Arr() As String
  49.     Dim FSO As Object
  50.     Dim ThisFolder As Object
  51.     Dim OneFile As Object
  52.     ReDim Arr(1 To 1)
  53.     Arr(1) = "NULL"
  54.     Dim Index As Long
  55.     Index = 0
  56.     Set FSO = CreateObject("Scripting.FileSystemObject")
  57.     On Error GoTo ErrorExit
  58.     Set ThisFolder = FSO.getfolder(FolderPath)
  59.     If Err.Number <> 0 Then Exit Function
  60.     For Each OneFile In ThisFolder.Files
  61.         If OneFile.Name Like Pattern Then
  62.             If Len(ComplementPattern) > 0 Then
  63.                 If Not OneFile.Name Like ComplementPattern Then
  64.                     Index = Index + 1
  65.                     ReDim Preserve Arr(1 To Index)
  66.                     Arr(Index) = OneFile.Path
  67.                 End If
  68.             Else
  69.                 Index = Index + 1
  70.                 ReDim Preserve Arr(1 To Index)
  71.                 Arr(Index) = OneFile.Path
  72.             End If
  73.         End If
  74.     Next OneFile
  75. ErrorExit:
  76.     FsoGetFiles = Arr
  77.     Erase Arr
  78.     Set FSO = Nothing
  79.     Set ThisFolder = Nothing
  80.     Set OneFile = Nothing
  81. End Function
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-2-22 10:57 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-2-22 10:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

感谢老师,问题解决了,但是有个小问题,运行速度有点慢,在运行过程中,其实数据早就提取好了,但是后期一直在转圈圈等待时间很久。

TA的精华主题

TA的得分主题

发表于 2021-2-22 22:16 | 显示全部楼层
本帖最后由 wang-way 于 2021-2-24 00:44 编辑
yusanli 发表于 2021-2-22 10:59
感谢老师,问题解决了,但是有个小问题,运行速度有点慢,在运行过程中,其实数据早就提取好了,但是后期 ...

换个方案试试

复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-2-23 08:39 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-2-23 09:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
yusanli 发表于 2021-2-22 10:57
大神,报错啊,自动化(automation)错误

代码被屏蔽了\

TA的精华主题

TA的得分主题

发表于 2022-8-2 15:33 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-29 06:24 , Processed in 0.046790 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表