ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA获取word文档标题内容,并把文件名改为标题名

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-2-27 11:40 | 显示全部楼层 |阅读模式
本帖最后由 AKNIER 于 2018-2-28 10:15 编辑

如下图,一个word文档中有2个标题1,需要一个VBA把文件名改成“标题1&标题2”,
2018-02-27_113750.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-27 21:16 | 显示全部楼层
附件.rar (12.65 KB, 下载次数: 65) 查了论坛的一些帖子,还是不会,希望得到帮助,这个对我很有用,

TA的精华主题

TA的得分主题

发表于 2018-2-27 22:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 xiaoyouxi01 于 2018-2-27 22:39 编辑

暂时以楼主提供的附件,写了段简单代码,楼主可以自己试试~

  1. Sub 宏1()
  2.     Dim path As String, filename As String, i As Integer
  3.     For i = 1 To ActiveDocument.Paragraphs.Count
  4.         If ActiveDocument.Paragraphs(i).Style = "标题 1" Then
  5.             filename = filename & "&" & ActiveDocument.Paragraphs(i).Range
  6.         End If
  7.     Next i
  8.     path = "C:"
  9.     filename = Replace(Mid(filename, 2), vbCr, "")
  10.     ActiveDocument.SaveAs2 filename:=path & filename & ".docx"
  11. End Sub
复制代码

贴在上面的这个代码,path = "C:\" 这句里的斜杠不知道怎么回事显示不出来。。再贴一个在下面~

Sub 宏1()
    Dim path As String, filename As String, i As Integer
    For i = 1 To ActiveDocument.Paragraphs.Count
        If ActiveDocument.Paragraphs(i).Style = "标题 1" Then
            filename = filename & "&" & ActiveDocument.Paragraphs(i).Range
        End If
    Next i
    path = "C:\"
    filename = Replace(Mid(filename, 2), vbCr, "")
    ActiveDocument.SaveAs2 filename:=path & filename & ".docx"
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-28 08:52 | 显示全部楼层
xiaoyouxi01 发表于 2018-2-27 22:37
暂时以楼主提供的附件,写了段简单代码,楼主可以自己试试~

谢谢,昨天晚上论坛有高人联系我了,附上代码大家一起学习
Sub test2()
    Dim pa As Paragraph, mystr$
    For Each pa In ActiveDocument.Paragraphs
        If pa.Style = "标题 1" Then mystr = mystr & "&" & Left(pa.Range.Text, Len(pa.Range) - 1)
    Next
   
    mystr = Mid(mystr, 2, Len(mystr))
    ActiveDocument.SaveAs ActiveDocument.Path & "\" & mystr & ".doc", FileFormat:=wdFormatDocument
    ActiveDocument.Close 0
End Sub

TA的精华主题

TA的得分主题

发表于 2018-2-28 09:35 来自手机 | 显示全部楼层
AKNIER 发表于 2018-2-28 08:52
谢谢,昨天晚上论坛有高人联系我了,附上代码大家一起学习
Sub test2()
    Dim pa As Paragraph, myst ...

一看就不像我写的代码,哈哈!因为20元,完全就是对技术的亵渎!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-2-28 10:14 | 显示全部楼层
我是菜鸟,不懂,至少解决了我的问题,谢谢各位的回复!

TA的精华主题

TA的得分主题

发表于 2018-4-18 06:47 | 显示全部楼层
楼主只要会用 VBA 宏代码,就好办了!论坛上会有不少朋友帮助你的。

TA的精华主题

TA的得分主题

发表于 2021-2-5 11:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我用类似的程序修改文件名并另存,但是最后弹出“运行时错误,5487,由于文件许可错误,Word无法完成保存。”,但是如果我直接输入文件路径和文件名进行保存,不用str传递文件名是可以成功修改文件名并另存的。有大神知道是什么原因,如何解决吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 01:30 , Processed in 0.049264 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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