ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何修改代码实现字体批量替换?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-5-9 14:51 | 显示全部楼层 |阅读模式
本帖最后由 tangqingfu 于 2019-5-11 16:08 编辑

请问如何修改代码将音标内的字体替换为西文字体Arial,用下面代码进行替换时,发现有一部分没替换成功(文档中红色标记)
Sub test()
Dim myRange As Range
Set myRange = IIf(Selection.Type = wdSelectionIP, ActiveDocument.Content, Selection.Range)
Application.ScreenUpdating = False
  With myRange.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .MatchWildcards = True
    .Text = "\/*\/"
    .Replacement.Text = "^&"
    .Replacement.Font.Name = "Arial"
    .Execute Replace:=wdReplaceAll
  End With
Application.ScreenUpdating = True
End Sub
问题.png

test.rar

4.57 KB, 下载次数: 57

TA的精华主题

TA的得分主题

发表于 2019-5-10 08:37 | 显示全部楼层
你好!有不有可能你电脑内安装的 “Arial” 字体库,是精简版的,里面的含字量少了,用手动 “查找替代” 试一下,就可确认。

TA的精华主题

TA的得分主题

发表于 2019-5-10 14:46 | 显示全部楼层
唐兄提供的代码我测试后觉得没有问题,添加了一句颜色代码,唐兄重新测试一下吧!
  1. Sub test()
  2.     Dim myRange As Range
  3.     Set myRange = IIf(Selection.Type = wdSelectionIP, ActiveDocument.Content, Selection.Range)
  4.     Application.ScreenUpdating = False
  5.     With myRange.Find
  6.         .ClearFormatting
  7.         .Replacement.ClearFormatting
  8.         .MatchWildcards = True
  9.         .Text = "\/*\/"
  10.         .Replacement.Text = "^&"
  11.         .Replacement.Font.Name = "Arial"
  12.         .Replacement.Font.Color = wdColorRed '红色(本行代码可删除)
  13.         .Execute Replace:=wdReplaceAll
  14.     End With
  15.     Application.ScreenUpdating = True
  16. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2019-5-10 14:47 | 显示全部楼层
本帖最后由 413191246se 于 2019-5-10 14:56 编辑

唐兄请注意——原代码功能:如果未选定文字内容,则本宏选定全文;否则,如果已选定部分内容,则本宏处理已选定的这部分内容。虽然IIF函数我不会用,但我现在理解了这个函数,和 IF 函数差不多。——所以,是不是 唐兄 使用本宏前,已经勾选了部分文字内容了呢?那样的话,替换只能替换了部分文字了;必须是未选定任何字符后,才会全文替换。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-10 21:40 | 显示全部楼层
413191246se 发表于 2019-5-10 14:47
唐兄请注意——原代码功能:如果未选定文字内容,则本宏选定全文;否则,如果已选定部分内容,则本宏处理已 ...

谢谢413191246se兄,和是否选定区域无关。在我的电脑上运行代码,发现有一部分没替换成功(文档中红色标记),你们电脑上会出现这样的情况吗?会不会如相见是缘8兄所说的,我电脑内安装的 “Arial” 字体库,是精简版的???
问题.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-10 21:43 | 显示全部楼层
本帖最后由 tangqingfu 于 2019-5-10 22:09 编辑
相见是缘8 发表于 2019-5-10 08:37
你好!有不有可能你电脑内安装的 “Arial” 字体库,是精简版的,里面的含字量少了,用手动 “查找替代”  ...


谢谢相见是缘8兄,在我的电脑上运行代码,会出现5楼这样的情况,难不成是精简版所致?您能发个你电脑上的 “Arial” 字体库给我测试吗?
我的邮箱:tangqingfu@126.com

TA的精华主题

TA的得分主题

发表于 2019-5-10 23:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
唐兄,我查看了 Arial 字体,发现只有英文小写、大写和数字。英语音标是国际音标,设置为 Arial 字体是否合理呢?之所以有些音标字符不能设置,我想是 Arial 字体不含这些音标字符的原因,就像设置汉字为 Arial 字体肯定无效。故断定不是字体出错了,是因为字体本身就不含这些字符。或请 唐兄 设置为其它字体试试,最好的办法是默认的 Times New Roman 比较好看。

TA的精华主题

TA的得分主题

发表于 2019-5-11 07:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
tangqingfu 发表于 2019-5-10 21:43
谢谢相见是缘8兄,在我的电脑上运行代码,会出现5楼这样的情况,难不成是精简版所致?您能发个你电脑上 ...

你好!我在我的电脑上测试你的代码及附件,结果和你一样,我电脑上安装的所有字体都是精简版的(10多 MB 的),前不久因我在处理“宋体”生僻字的时候,碰到类似的情况,后由chendeyan126 朋友,给了一个 39MB 的“宋体-方正超大字符集”,问题才得于解决,所以我只是猜你的情况会不会也有这种可能?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-11 08:02 | 显示全部楼层
相见是缘8 发表于 2019-5-11 07:34
你好!我在我的电脑上测试你的代码及附件,结果和你一样,我电脑上安装的所有字体都是精简版的(10多 MB  ...

对于没替换成功的内容(文档中红色标记),手动选中它们后,点工具栏的字体(arial)可以将它们改为arial字体,为什么用代码无法完全实现呢?对于大容量的文档,肯定要自动化才轻松,手动太累人了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-11 08:04 | 显示全部楼层
413191246se 发表于 2019-5-10 23:44
唐兄,我查看了 Arial 字体,发现只有英文小写、大写和数字。英语音标是国际音标,设置为 Arial 字体是否合 ...

不是这个原因,选定不能替换的内容,点击工具栏的字体(arial)可以将它们改为arial字体。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-3-11 13:06 , Processed in 0.025980 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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