ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

求编程通读Word文档,分解出其中的文字与图片的方法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-4-29 10:15 | 显示全部楼层 |阅读模式

本人想用VBA通读一Word文档(内含文字、图片、表格)。

要求依次输出文档中各个组成部分的属性,比如第一部分是文字,第二部分是表格,第三部分是图片,第四部分是图片。。。

同时,还希望把文字与图片另存为当前目录下多个单独的文件。

请高手出手相助。

TA的精华主题

TA的得分主题

发表于 2005-4-29 11:57 | 显示全部楼层
最近呀,WORD版的问题难度逐日递增,是不是我们的斑竹太强了,呵呵。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-30 08:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-4-30 10:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用apollo086在2005-4-30 8:10:00的发言:

请出手支持

请参考:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-4-30 10:40:36 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit Sub CopyTablesToNewDoc() Dim rngDoc As Range, aTable As Table, shaDoc As Range, aShape As Shape On Error Resume Next '忽略错误 Application.ScreenUpdating = False '关闭屏幕更新 With ThisDocument '本文档 If .Tables.Count >= 1 Then '表格总数大于1 '定义一个新文档的起始区域 Set rngDoc = Documents.Add.Range(0, 0) For Each aTable In .Tables aTable.Range.Copy '复制表格对象 aTable.Delete '删除表格 With rngDoc .Paste '粘贴 .Collapse Direction:=wdCollapseEnd '折叠到末尾 .InsertParagraphAfter '插入一个空白段落 .Collapse Direction:=wdCollapseEnd '再折叠到末尾 End With Next rngDoc.Document.SaveAs "OnlyTables" '另存为 End If If .Shapes.Count >= 1 Then '如果图形数大于1 Set shaDoc = Documents.Add.Range(0, 0) For Each aShape In .Shapes '在图形中循环 aShape.Select '选中该图形 Selection.Copy '复制 aShape.Delete '删除 shaDoc.Paste '粘贴 Next shaDoc.Document.SaveAs "OnlyShapes" End If .SaveAs "OnlyText" End With Application.ScreenUpdating = True '恢复屏幕更新 End Sub '---------------------- 注意此代码中没有包括使用嵌入式图形,请自行设置代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-30 12:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

守柔版主的程序中,可以把文字、图片、表格分别存为不不同的文件。

但有否包含“要求依次输出文档中各个组成部分的属性”这一功能?就是说,还希望知道原文档中,第一个部分是文字还是图片还是表格,第二个部分是。。。。

还请版主再次帮助,这个问题我实在是不知如何解决了。

TA的精华主题

TA的得分主题

发表于 2005-4-30 15:20 | 显示全部楼层
我本来不打算回答你的问题的,因为我觉得你说得过于笼统,你最好上传一个代表性的附件,VBA用语言来揣测,最终你若不会,还得我来修改,这样效率太低了,也浪费精力与时间。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-30 23:33 | 显示全部楼层

wY1YWLL1.rar (200.3 KB, 下载次数: 19)

版主,我上传了一个示例性的附件。

能否通过编程,判断出本文档的各个部分的属性。

期望得到的结果为:

第一部分:文字;第二部分:表格;第三部分:文字;第四部分:图片

第五部分:文字;第六部分:表格;第七部分:图片

TA的精华主题

TA的得分主题

发表于 2005-5-1 05:24 | 显示全部楼层

以下代码参强人意,仅供参考:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-5-1 5:24:03 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit Sub Example() Dim i As Integer, N As Integer, TpCount As Integer On Error Resume Next '忽略错误 Application.ScreenUpdating = False '关闭屏幕更新 With ActiveDocument '活动文档 For i = 1 To .Paragraphs.Count '在所有段落数中循环 .Paragraphs(i).Range.Select '选定每一指定段落 If Len(Selection) > 1 Then '非空白段落 N = N + 1 '计数 With Selection 'SELECTION对象 Select Case .Type 'TYPE属性 Case wdSelectionNormal '2 If .InlineShapes.Count <> 0 Then MsgBox "第" & N & "部分为嵌入式图形部分" ' ElseIf .ShapeRange.Count <> 0 Then ' MsgBox "第" & N & "部分为图形部分" Else MsgBox "第" & N & "部分为文字部分" End If Case wdSelectionColumn '4 MsgBox "第" & N & "部分为表格部分" TpCount = .Tables(1).Range.Paragraphs.Count i = i + TpCount - 1 End Select End With End If Next End With Application.ScreenUpdating = True '恢复屏幕更新 End Sub '----------------------对非嵌入式图形,目前我没有找到好方法。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-5-1 22:14 | 显示全部楼层

版主功力高深,无论什么样的问题,到了版主手中全部被巧妙解决。

多谢了。

同时我的疑惑也找到了答案了。原来Word所有的组成部分都属于Paragraph,我一直以为表格与图型不能通过Paragraph来引用呢

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-13 15:09 , Processed in 0.033576 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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