ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] Word表格转Excel后提取列数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-3-13 10:48 | 显示全部楼层 |阅读模式
说明:
将WORD文档中的的表格读入到EXCEL之后(此项已实现),表格非常零乱不规范:
1)每个工作表的表头内容(本表A3:F3对应的内容)不在固定的列;
2)所需的数据(编号、工序名称、工序内容等),会跨不同的“表格”,多工序的会有几个表头隔开,不连续,而且有的是对应不同的合并单元格或不同行;

想通过处理获得“主文件”中的结果,以便重新建立规范的数据库,但上述情况无法方便的获取各工作表中的数据,不知如何通过 关键字搜索还是通过数组实现,无从下手,请老师帮忙或给个方法。

或者,能否一步到位,在原来的代码中修改一下,直接在WORD中提取相关的数据(不需复制到EXCEL之后再提取数据了)。谢谢!

详见附件:    Word表格转Excel后提取列数据.rar (113.15 KB, 下载次数: 83)      

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-13 13:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
补充一下:WORD里的表格格式基本一致的,但复制到EXCEL后偏差较多了

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-26 12:27 | 显示全部楼层
悬而未决的问题,看下能否直接从WORD中提取所需数据?

TA的精华主题

TA的得分主题

发表于 2015-3-27 21:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub test()  '直接提取数据至Execl
  2.     Dim arr(1 To 3000, 1 To 9), ar, fso, fp, wd, n%, subp, f, i%, s$, k$, k1$, br, cr, m%
  3.     ar = [{1,3;2,3;3,3;1,5;2,5;3,5}]
  4.     Set fso = CreateObject("scripting.filesystemobject")
  5.     Set fp = fso.getfolder(ThisWorkbook.Path)
  6.     Set wd = CreateObject("word.application")
  7.     'wd.Visible = True
  8.     n = 1
  9.     For Each subp In fp.subfolders
  10.         For Each f In subp.Files
  11.             If f Like "*.doc*" Then
  12.                 With wd.documents.Open(f & "")
  13.                     For i = 1 To UBound(ar)
  14.                         arr(n, i) = Application.Clean(.tables(1).cell(ar(i, 1), ar(i, 2)))
  15.                     Next
  16.                     For Each tabe In .tables
  17.                         s = Application.Clean(tabe.cell(5, 1)): m = 5
  18.                         Do While IsNumeric(s)
  19.                             arr(n, 7) = s
  20.                             k = tabe.cell(m, 2): k = Left(k, Len(k) - 2)
  21.                             k1 = tabe.cell(m, 3): k1 = Left(k1, Len(k1) - 2)
  22.                             br = Split(k, vbCr): cr = Split(k1, vbCr)
  23.                             If UBound(br) = UBound(cr) Then
  24.                                 For i = 0 To UBound(br)
  25.                                     arr(n, 8) = br(i): arr(n, 9) = cr(i)
  26.                                     n = n + 1
  27.                                 Next
  28.                             Else
  29.                                 arr(n, 8) = k: arr(n, 9) = k1: n = n + 1
  30.                             End If
  31.                             m = m + 1
  32.                             If tabe.Rows.Count = m Then Exit Do
  33.                             s = Application.Clean(tabe.cell(m, 1))
  34.                         Loop
  35.                     Next
  36.                     .Close False
  37.                 End With
  38.             End If
  39.         Next
  40.     Next
  41.     wd.Quit: Set fso = Nothing
  42.     Sheets("主文件").Range("a4").Resize(n, 9) = arr
  43. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-3-27 21:53 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-27 23:12 | 显示全部楼层
liu-aguang 发表于 2015-3-27 21:53

非常利害,终于搞掂,太感谢了。
真的需要研究一下,好好学习,天天向上。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-28 19:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
实际测试时,遇到有两个文件夹内的某个文件,运行时提示文档被计算机(如admini)锁定,只能以只读方式打开,点击确定,后面程序就出错了。
但我单独打开该文档,是完全无密码及可编辑的,后来查看隐藏文件,发现原来有临时文件,但删除后,然后无法读取该文档的内容,仍提示为锁定,只读打开,继续执行则出错。
请问能否通过VBA处理,在打开WORD或EXCEL文档时,不管文档是锁定状态还是共享已打开的只可只读状态时,都可以忽略,并继续执行获取数据的操作呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-28 19:40 | 显示全部楼层
而我用来复制旧WORD到工作表的代码,对同样的文档却不会出现此问题,点解?

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-28 20:39 | 显示全部楼层
liu-aguang 发表于 2015-3-27 21:53

象这种情况会出错:
成品机.rar (1.17 MB, 下载次数: 15)

象这种情况取不到数据:
新建文件夹.rar (53.01 KB, 下载次数: 8)

请老师帮忙再看下

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-28 21:38 | 显示全部楼层
另外,有的文件夹下还有多级子文件夹,能否改为历遍所有子文件夹
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 21:27 , Processed in 0.044952 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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