ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求一个word宏,把非红色的字体都换成黑色

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-6-5 20:54 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
RT,把所有word全文不是红色的字体,都改成黑色,求这个宏

TA的精华主题

TA的得分主题

发表于 2019-6-6 03:06 | 显示全部楼层
  1. Sub test非红色字符转黑色()
  2.     With ActiveDocument
  3.         '红色字符加下划线
  4.         With .Content.Find
  5.             .ClearFormatting
  6.             .Font.Color = wdColorRed
  7.             With .Replacement
  8.                 .ClearFormatting
  9.                 .Font.Underline = wdUnderlineSingle
  10.             End With
  11.             .Execute FindText:="", ReplaceWith:="", Format:=True, Replace:=wdReplaceAll
  12.         End With

  13.         '全文设为黑色
  14.         .Content.Font.Color = wdColorBlack

  15.         '查找下划线字符设为红色,并取消下划线
  16.          With .Content.Find
  17.             .ClearFormatting
  18.             .Font.Underline = wdUnderlineSingle
  19.             With .Replacement
  20.                 .ClearFormatting
  21.                 With .Font
  22.                     .Color = wdColorRed
  23.                     .Underline = wdUnderlineNone
  24.                 End With
  25.             End With
  26.             .Execute FindText:="", ReplaceWith:="", Format:=True, Replace:=wdReplaceAll
  27.         End With
  28.     End With
  29. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2019-6-6 09:00 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-6-7 01:01 | 显示全部楼层
谢谢楼上朋友! 我很想一步就完成,比如如果能有 .Font.Color = unwdColorRed 这样的语句,但 .Color 是属性,不是方法,恐怕就不能实现了。还好,全文替换速度很快(代码是照抄微软VBA帮助的)。

TA的精华主题

TA的得分主题

发表于 2019-6-7 09:56 | 显示全部楼层
本帖最后由 相见是缘8 于 2019-6-7 10:39 编辑
413191246se 发表于 2019-6-7 01:01
谢谢楼上朋友! 我很想一步就完成,比如如果能有 .Font.Color = unwdColorRed 这样的语句,但 .Color 是属 ...

这个一步就完成,可能较难!除非可对未选定部分替换。

TA的精华主题

TA的得分主题

发表于 2019-6-7 11:54 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-6-7 12:55 | 显示全部楼层
刚才编了一个小宏,逐字符判断,结果实测需等待很久,等了一会儿,我给中断了。2楼代码反复替换,用时很短,实测是 .23 秒,确实极快。测试文本有 3200 字。

TA的精华主题

TA的得分主题

发表于 2019-6-7 16:06 | 显示全部楼层
Sub test()
    Dim myrange As Range, start As Long, endl As Long
    endl = ActiveDocument.Range.End
    Set myrange = ActiveDocument.Range
    Do
        With myrange.Find
            .ClearFormatting
            .Font.ColorIndex = wdRed
            .Execute
            If .Found = False Then Exit Do
            ActiveDocument.Range(start, myrange.start).Font.ColorIndex = wdBlack
            start = myrange.End
            Set myrange = ActiveDocument.Range(start, endl)
        End With
    Loop
    ActiveDocument.Range(start, endl).Font.ColorIndex = wdBlack
End Sub

TA的精华主题

TA的得分主题

发表于 2019-6-7 18:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub xiaohualu()
    Dim st As Long, ed As Long, AD As Document
    Set AD = ActiveDocument
    With AD.Content.Find
        .ClearFormatting
        .Font.ColorIndex = wdRed
        Do While .Execute
            ed = .Parent.start
            AD.Range(st, ed).Font.ColorIndex = wdBlack
            st = .Parent.End
        Loop
    End With
    ed = AD.Range.End
    AD.Range(st, ed).Font.ColorIndex = wdBlack
End Sub

TA的精华主题

TA的得分主题

发表于 2019-6-7 20:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 413191246se 于 2019-6-7 20:34 编辑

* 测试结果(测试文档 3200字):
* 413191246se 代码,用时 0.21 秒
* daibao88朋友代码,用时 6.20 秒
* 小花鹿 老师  代码,用时 6.68 秒
* 总结:本题不能用常规 VBA 编程,须用查找替换最快(我的代码是照抄微软官方 VBA 帮助的)。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 07:15 , Processed in 0.036625 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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