ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何将word里的每一篇文章提取出来,存入txt文件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-11-25 00:13 | 显示全部楼层 |阅读模式
本帖最后由 feng1725 于 2015-11-25 00:19 编辑

一个word文件里面有很多文章,我要把里面的每篇文章单独拷贝出来,放到txt文件里,文章的标题作为txt文件的文件名。


ps  我如何给解答的人、对我有帮助的人一定奖励?论坛里面有没有这种机制?

需要处理word文档.rar

169.47 KB, 下载次数: 33

TA的精华主题

TA的得分主题

发表于 2015-11-25 08:47 | 显示全部楼层
量身定做,供参考。
按Alt+F8,选择“分割”程序运行它。

feng1725_2015年1-10月人民日报评论员文章.rar

174.92 KB, 下载次数: 71

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-25 09:31 | 显示全部楼层
山菊花 发表于 2015-11-25 08:47
量身定做,供参考。
按Alt+F8,选择“分割”程序运行它。

谢谢版主,能加一下你QQ吗?或者你方便加一下我QQ13467585,得对你表示以下感谢啊。

TA的精华主题

TA的得分主题

发表于 2015-11-25 09:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
feng1725 发表于 2015-11-25 09:31
谢谢版主,能加一下你QQ吗?或者你方便加一下我QQ13467585,得对你表示以下感谢啊。

处理word文档我也不怎么熟悉,如果能用就好。
说声谢谢已经足够了。也谢谢你。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-25 21:41 | 显示全部楼层
山菊花 发表于 2015-11-25 08:47
量身定做,供参考。
按Alt+F8,选择“分割”程序运行它。

问题一:

Arr = VBA.Split(Replace(myRange.Text, Chr(10), "") & Chr(13) & "人民日报评论员:", Chr(13))

对word文档(myRange.Text)进行替换,把换行chr(10)都替换成"",因为文本文档会自动换行。

在文档的最后加入chr(13)回车,还有“人民日报评论员:”字样

最后,根据回车chr(13)对word文档进行分割;是不是这样?  可是word文档中很多回车,并不是一篇文章一个回车


问题二:

For i = 129 To UBound(Arr)

129怎么来的?


问题三:

Open cPath & Format(n, "000 ") & Replace(Arr(i), "?", "") & ".txt" For Output As #1

Open cPath & Format(n, "000 ") & "人民日报评论员文章 " & ".txt" For Output As #1


一共两句代码,直接用下面一句就可以了,为什么还要上面一句

TA的精华主题

TA的得分主题

发表于 2015-11-26 08:05 | 显示全部楼层
问题一不是问题,用chr(13)分割,得到Arr(),每一元素Arr(i)就是一个段落,程序使用For/Nixt循环依次把所有段落输出到Txt文件中。
问题二,本文档从第129段开始是正文,前面的是目录。
问题三,前一句以序号及文章标题命名文件,后一句仅使用序号和“人民日报评论员文章”字样作文件名。当文章标题中包含非法字符不能用作文件名时,改用第二个方案命名。如果都用第二个方案命名,程序可改为:
  1. Sub 分割()
  2.     Dim myRange As Range, cPath$, cTxt$, n%, Arr
  3.     cPath = ThisDocument.Path & "\Txt"
  4.     If Dir(cPath, 16) = "" Then MkDir cPath
  5.     Set myRange = ThisDocument.Range
  6.     myRange.SetRange myRange.Start, myRange.End - 1
  7.     Arr = VBA.Split(Replace(myRange.Text, Chr(10), "") & Chr(13) & "人民日报评论员:", Chr(13))
  8.     For i = 129 To UBound(Arr)
  9.         If Arr(i) Like "人民日报评论员:*" Then
  10.             If i > 129 Then Close #1
  11.             If i < UBound(Arr) Then
  12.                 n = n + 1
  13.                 Open cPath & Format(n, "000 ") & "人民日报评论员文章 " & ".txt" For Output As #1
  14.                 Print #1, Arr(i)
  15.             End If
  16.         Else
  17.             Print #1, Arr(i)
  18.         End If
  19.     Next
  20.     MsgBox "保存完毕。"
  21. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-11-26 08:30 | 显示全部楼层
处理的速度简直是“秒杀”呀!收藏学习!
PS:谢谢楼主分享这篇文档!

TA的精华主题

TA的得分主题

发表于 2015-11-26 10:11 | 显示全部楼层
程序以“人民日报评论员:”开头作为是否标题的依据,仔细看看,有多篇文章不适用。
将程序改为是否粗体为依据(请重新下载附件),遗憾的是逐段读取内容拖慢了速度。
期待高手指教。

TA的精华主题

TA的得分主题

发表于 2015-11-27 08:15 | 显示全部楼层
山菊花 发表于 2015-11-25 08:47
量身定做,供参考。
按Alt+F8,选择“分割”程序运行它。

前辈好!
我下载附件运行该宏后,被禁止,(我用的还是2003版本,是个外行)我把该代码再粘贴进 NewMacros 窗口,删除 ThisDocument 处的代码后运行该宏,提示 “保存完毕” 可找不到提取的文件。求前辈赐教!谢谢!

TA的精华主题

TA的得分主题

发表于 2015-11-27 09:50 | 显示全部楼层
13907933959 发表于 2015-11-27 08:15
前辈好!
我下载附件运行该宏后,被禁止,(我用的还是2003版本,是个外行)我把该代码再粘贴进 NewMacr ...

保存在文件夹“Txt”中。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-15 14:21 , Processed in 0.026011 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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