ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: qiucan1012

[求助] 批量提取word指定内容到Excel

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-11-23 12:43 | 显示全部楼层
体力活。。。。。还有就是:Word中某些单元格 有“打勾”的选择项,怎么判断是“打勾的”还是没有打勾的?是整个单元格复制到Excel吗???

TA的精华主题

TA的得分主题

发表于 2017-11-23 13:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 fxl447098457 于 2017-11-23 13:10 编辑

Sub my()
Dim fn As String, myapp As Object, Wdoc As Object,i%, j%, TotalPages%, Arr(), k&
Application.ScreenUpdating = False
Set myapp = CreateObject("word.application")
fn = ThisWorkbook.Path & "\模板1.doc"
With myapp
Set Wdoc = .documents.Open(Filename:=fn)
Wdoc.ActiveWindow.View.Type = 3
TotalPages = Wdoc.ActiveWindow.Panes(1).Pages.Count * 2
For i = 1 To TotalPages
If i Mod 2 = 0 Then
  k = k + 1
  ReDim Preserve Arr(1 To 10, 1 To k)
  With Wdoc.tables(i)
  Arr(1, k) = Split(.Cell(1, 2).Range.Text, vbCr)(0)
  Arr(2, k) = Split(.Cell(1, 6).Range.Text, vbCr)(0)
  Arr(3, k) = "'"
  For j = 2 To 19
  Arr(3, k) = Arr(3, k) & Split(.Cell(2, j).Range.Text, vbCr)(0)
  Next j
  Arr(4, k) = Split(.Cell(2, 21).Range.Text, vbCr)(0)
  Arr(5, k) = Split(.Cell(3, 2).Range.Text, "□")(1)
  If Len(Arr(5, k)) >= 5 Then Arr(5, k) = "农村" Else Arr(5, k) = "城镇"
  Arr(6, k) = Split(.Cell(3, 4).Range.Text, vbCr)(0)
  Arr(7, k) = Split(.Cell(5, 2).Range.Text, vbCr)(0)
  Arr(8, k) = Split(.Cell(5, 4).Range.Text, vbCr)(0)
  Arr(9, k) = Split(.Cell(6, 2).Range.Text, vbCr)(0)
  Arr(10, k) = Split(.Cell(8, 4).Range.Text, vbCr)(0)
End With
End If
Next i
Wdoc.Close 0
.Quit
End With
[A1].CurrentRegion.Offset(1).ClearContents
[A2].Resize(UBound(Arr, 2), 10) = Application.Transpose(Arr)
Set myapp = Nothing
Application.ScreenUpdating = True
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-23 14:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
fxl447098457 发表于 2017-11-23 13:09
Sub my()
Dim fn As String, myapp As Object, Wdoc As Object,i%, j%, TotalPages%, Arr(), k&
Applicat ...

非常好用 谢谢 非常感谢。 感恩

TA的精华主题

TA的得分主题

发表于 2017-11-24 13:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
fxl447098457 发表于 2017-11-23 13:09
Sub my()
Dim fn As String, myapp As Object, Wdoc As Object,i%, j%, TotalPages%, Arr(), k&
Applicat ...

大神,如果是每一个单独的word文档呢,是不是只需要调整一下fn = ThisWorkbook.Path & "\模板1.doc",其他地方不用动呢

TA的精华主题

TA的得分主题

发表于 2017-11-26 08:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
fxl447098457 发表于 2017-11-23 13:09
Sub my()
Dim fn As String, myapp As Object, Wdoc As Object,i%, j%, TotalPages%, Arr(), k&
Applicat ...

你好,谢谢分享这么有用的代码,我比较认真看了一下代码准备修改一下然后应用到我工作需要的地方,现在有几个地方不是很理解,1Wdoc.ActiveWindow.Panes(1).Pages.Count * 2页面为什么要乘以2
2Split(.Cell(1, 2).Range.Text, vbCr)(0)参数(0)是什么意思?3Arr(5, k) = Split(.Cell(3, 2).Range.Text, "□")(1)
  If Len(Arr(5, k)) >= 5 Then Arr(5, k) = "农村" Else Arr(5, k) = "城镇" 这个我也不是很理解。麻烦大神空的时候能不能帮我解答一下,先谢谢了。

TA的精华主题

TA的得分主题

发表于 2017-11-26 09:20 | 显示全部楼层
zhangcheng6688 发表于 2017-11-26 08:52
你好,谢谢分享这么有用的代码,我比较认真看了一下代码准备修改一下然后应用到我工作需要的地方,现在有 ...

1------乘以2,是因为一个页面有2个表格,总页数乘以2就是文档总共有的表格数。
2-----因为split拆分出来的是数组,0是取得拆分后的数组的第一个元素内容。
3.利用的是单元格内符号拆分的字长数来确定勾选的是城镇还是农村。因为勾选和没勾选的都是文字符号,一般方法是无法确定是否被勾选,通过拆分后的元素比较下长度来得到结果。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-11-26 09:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
genitous 发表于 2017-11-24 13:08
大神,如果是每一个单独的word文档呢,是不是只需要调整一下fn = ThisWorkbook.Path & "\模板1.doc",其 ...

如果是单个文档来用,就如你所说。
如果批量使用。你要遍历文件打开文件,然后才能到我这个后面的过程。

TA的精华主题

TA的得分主题

发表于 2017-11-29 13:11 | 显示全部楼层
fxl447098457 发表于 2017-11-23 13:09
Sub my()
Dim fn As String, myapp As Object, Wdoc As Object,i%, j%, TotalPages%, Arr(), k&
Applicat ...

大神,还有一个疑问,总页数*2是表格数这个理解,那总的循环数应该也是总页数*2,但是现在“If i Mod 2 = 0 Then”循环数不是少了一半嘛?

TA的精华主题

TA的得分主题

发表于 2017-11-29 13:13 | 显示全部楼层
zhangcheng6688 发表于 2017-11-29 13:11
大神,还有一个疑问,总页数*2是表格数这个理解,那总的循环数应该也是总页数*2,但是现在“If i Mod 2 = ...

有一个表格是不需要的,我才排除掉啊。。

TA的精华主题

TA的得分主题

发表于 2017-11-29 13:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
fxl447098457 发表于 2017-11-29 13:13
有一个表格是不需要的,我才排除掉啊。。

偶,那个附件数据不是很齐全,打扰了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-14 08:42 , Processed in 0.024030 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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