ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

批量提取某文件夹下的所有word文件的标题作为文件名

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-5-7 16:31 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

某文件夹下若干个word材料,名字为001—100,内容第一行都是材料标题,现想用标题命名文件怎么做??怎么提取每个word里面的第一行或段出来??

在线等高手,谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-7 17:00 | 显示全部楼层

没人回答,最近一连问好几个问题都没人回答,哎,excelhome进入低谷???

原来一问,不到10分钟一般有回答的

TA的精华主题

TA的得分主题

发表于 2008-5-8 09:57 | 显示全部楼层

Sub Word文件改名()
    Dim myS As String
    Selection.HomeKey wdStory
    Selection.EndKey wdLine
    Selection.HomeKey wdLine, wdExtend
    myS = Selection.Range.Text
    ActiveDocument.SaveAs FileName:="C:\" & myS & ".doc"
    ActiveWindow.Close
End Sub

搜索一下,很多答案的

[此贴子已经被作者于2008-5-8 10:43:15编辑过]

TA的精华主题

TA的得分主题

发表于 2008-5-11 00:15 | 显示全部楼层

简单做了一个,没有添加错误处理代码:

Sub SaveDoc()

   Dim P_Doc As Document, P_Path, str_Path As String, myRange As Range

   With Application.FileDialog(msoFileDialogFilePicker)

      .Title = "请选择被另存的Word文件"

      .AllowMultiSelect = True

      .Filters.Clear

      .Filters.Add "Word 文档", "*.doc"

          If .Show = -1 Then

             str_Path = CurDir & "\"

             For Each P_Path In .SelectedItems

                Set P_Doc = Documents.Open(FileName:=P_Path)

                Set myRange = P_Doc.Paragraphs(1).Range

                myRange.MoveEnd wdCharacter, -1

                P_Doc.SaveAs str_Path & myRange.Text

                P_Doc.Close

             Next

          End If

   End With

End Sub

 

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-11 09:34 | 显示全部楼层

谢谢两位大侠,请问chylhr,如果增加判断myrange为空啊??为空就不能命名了,如果为空则取第二段,第二段也为空,就取第三段,谢谢

另外再帮我增加一个变量,获取原文件名,pname=原文件名,我自己有用, 谢谢

[此贴子已经被作者于2008-5-11 9:40:39编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-12 14:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
继续顶上去,有人帮忙回答不??

TA的精华主题

TA的得分主题

发表于 2008-5-14 16:06 | 显示全部楼层

我用的是filesearch

paragraph和line不一样,如果第一段很长,这个文件名可能就长了。当然,如果第一段确保是标题也无所谓。

判断为空:if Len(ActiveDocument.Paragraphs(1).Range.Text)=1 then

获得文件名:

pname=ActiveDocument.Name

TA的精华主题

TA的得分主题

发表于 2011-3-2 22:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 chylhr 于 2008-5-11 00:15 发表
简单做了一个,没有添加错误处理代码:Sub SaveDoc()   Dim P_Doc As Document, P_Path, str_Path As String, myRange As Range   With Application.FileDialog(msoFileDialogFilePicker)  ...

做个记号先

TA的精华主题

TA的得分主题

发表于 2011-3-8 22:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
没有看明白,能不能上传个附件。

TA的精华主题

TA的得分主题

发表于 2019-5-16 08:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
chylhr 发表于 2008-5-11 00:15
简单做了一个,没有添加错误处理代码:Sub SaveDoc()   Dim P_Doc As Document, P_Path, str_Pat ...

测试了老师的代码,确实可以成功。
但是,文件夹中只要有一个空文档,就全部操作不下去了。
期待有一个检测是否有空文档的判断。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 07:34 , Processed in 0.045361 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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