ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何将文档转换成多个文本文件?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2004-8-23 11:22 | 显示全部楼层 |阅读模式
我有个word文档,里面的格式是一问,一答的形式,每到题中间有个空行。能否将文档中每道题都转换为一个文本文件,我主要是想将这个文档转换为chm格式。请教,谢谢!

TA的精华主题

TA的得分主题

发表于 2004-8-23 12:18 | 显示全部楼层
其实不难,但最好上传部分文件,以利判断语句.

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-8-23 14:44 | 显示全部楼层
以下是引用守柔在2004-8-23 12:18:00的发言: 其实不难,但最好上传部分文件,以利判断语句.
SP3E7ACM.rar (31.71 KB, 下载次数: 21) 试试这个实例,谢谢!最好能告诉我方法,我还有一些。

TA的精华主题

TA的得分主题

发表于 2004-8-23 15:44 | 显示全部楼层

你仔细看一下,部分内容中没有空段落标记,有些有空行,但不是段落。(请在WORD工具/选项/视图/标记:全部前打勾)

我再看一下,明天上传,今天不空(如果没有绝对分隔,恐有得失)

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-8-23 15:48 | 显示全部楼层

TA的精华主题

TA的得分主题

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

在活动文档的工程资源管理器下插入一模块(必须)

确认当前WORD程序只有一个文档即活动文档关闭其它WORD窗口和文档(必须)

运行过程:DelSecBlank

代码如下:

Option Compare Text '将字符串比较方法设为 Text,不区分字母大小写 Sub SaveText() Dim i As Paragraph, a As Long, b As Long, c As Range, NewDoc As Document Dim FilName As String, SavPath As String On Error Resume Next Application.ScreenUpdating = False SavPath = "D:\temp\" '预设保存路径 a = 0 '预设起点位置 For Each i In ActiveDocument.Paragraphs '段落中循环 If Len(i.Range) <= 1 Then '如果为空白段落(行) '如果该段落的下一个段落中不包括英文字母或者包括英文字母但段落为粗体字者 If i.Next(1).Range Like "[A-Z]*" = False Or i.Next(1).Range.Font.Bold = True Then b = i.Range.End '取得该段落最后位置 Set c = ActiveDocument.Range(a, b) '设置Range对象 '从C中提取文件名,该文件名为C中的第一个段落(提问),去掉空格和最后的回车符 FilName = Mid(Trim(c.Paragraphs(1)), 1, Len(Trim(c.Paragraphs(1))) - 1) ' ActiveDocument.Range(a, b).Select Set NewDoc = Documents.Add '新建一文档 Selection.InsertAfter c '插入问答题内容 '另存为文本文件 NewDoc.SaveAs FileName:=SavPath & FilName & ".txt", FileFormat:=wdFormatText ActiveWindow.Close False '退出该文档 Set NewDoc = Nothing End If End If a = b '重设起点位置 Next Application.ScreenUpdating = True End Sub Sub DelSecBlank() Dim i As Paragraph, ParEnd As Long On Error Resume Next Application.ScreenUpdating = False With ActiveDocument ParEnd = .Paragraphs.Count .Paragraphs(ParEnd).Range.InsertAfter Chr(13) & Chr(13) & "小奔" & Now '设定最后一个标记 ParEnd = .Paragraphs.Count .Paragraphs(ParEnd).Range.Font.Bold = True .Paragraphs(1).Range.Delete '第一个段落删除(与要求不符) For Each i In .Paragraphs If Len(i.Range) <= 1 And Len(i.Next(1).Range) <= 1 Then i.Next(1).Range.Delete '查找连续二个空白段落者将第二个空白段落删除 End If Next End With Application.ScreenUpdating = True Call SaveText End Sub

TA的精华主题

TA的得分主题

发表于 2004-8-24 04:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用小奔在2004-8-23 15:48:00的发言: 先谢谢斑竹了,!

4mXBhoN2.rar (40.29 KB, 下载次数: 29)

附上原件(部分空行已被我删除了),请将其中代码复制于另一个全文档中。

如果段落较多可能要花费3~5分钟。

该文档运行时约1分钟,其中保存了个57文本文件。

如有问题请及时与我联系。

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-8-24 08:41 | 显示全部楼层
非常棒!!!!目前还没发现什么问题,谢谢!!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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