ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论]用下面的代码设定指定字符的字体为何有时不灵?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-5-30 21:28 | 显示全部楼层 |阅读模式
因为专业排版需要,我自己用Font Creator 5.0软件造了一些WORD中没有的符号并生成TT字体,名为“ZBFH”,在文档中录入时我不想将这些符号的字体一一设定为“ZBFH”,而想用VBA代码最后一次搞定,还有几个全角符号当将全文选定并设成Times New Roman体后,它们变得让人看着不舒服,故也想批量变回“宋体”,我今天下午测试了一下,很奇怪,在同一台电脑上有时很灵,有时又不灵。是不是代码有问题。 Sub FONTS() '将指定的全角字符设成宋体 Dim myFunction() As Variant, aArray As Variant '指定更改内容,如果需要,可以扩充数组 myFunction = Array("“", "”", "‘", "’", "↑", "↓", "→", "←", "≥", "≤", "…", "○", "□", _ "―") '将指定内容文本改为宋体 With ActiveDocument.Content.Find For Each aArray In myFunction .ClearFormatting .MatchCase = False .MatchCase = True .Text = aArray With .Replacement .ClearFormatting .Font.Name = "宋体" End With .Execute Replace:=wdReplaceAll Next End With '将指定的自造字符设成ZBFH体 Dim my2Function() As Variant, a2Array As Variant '指定更改内容,如果需要,可以扩充数组 my2Function = Array("?", "?", "?", "?", "?", "?", "?", "?", "?") '将指定内容文本改为ZBFH体 With ActiveDocument.Content.Find For Each a2Array In my2Function .ClearFormatting .MatchCase = False .MatchCase = True .Text = a2Array With .Replacement .ClearFormatting .Font.Name = "ZBFH" End With .Execute Replace:=wdReplaceAll Next End With End Sub

TA的精华主题

TA的得分主题

发表于 2006-5-30 22:58 | 显示全部楼层
楼主请注意:
①你的帖子中用到了自造字符,除你我外别人是看不到的。
②楼主的目的用查找替换很容易实现。
③楼主只要将字体名称和字体文件名称用工具改为eudc.tte即不需要单独设字体。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-5-31 08:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
IT2CiBls.rar (147.02 KB, 下载次数: 37) 如用系统造字程序,我也试用过多次,发现移植到别的机子上很困难,再者含有这些EUDC.TTE自造字的文档保存时想嵌入这些字符我也试验过多次,至今未找到办法。一位网友说能够,我用QQ远程控制让他设置,也未成功。故想出用自造字体的办法。此法这两个问题均能很好很易解决:移植只需将我的ZBFH.TTF复制到别的机上的FONTS目录下;嵌入字体完全不受任何限制,打印或发到别处的机子上也无任何问题。 补传我的“ZBFH.TTF”供参考。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-11 09:48 | 显示全部楼层
经过多次试验,也受到yuyvtul兄方法的启发,自造字体嵌入的问题应该彻底解决了: 先将自造字体改名为EUDC.TTE后,再复制到WINDOWS\FONTS下(WIN9X要复制到WINDOWS下),重启系统后,自造字体(字体名仍为ZBFH)自动和系统的中文字体链接,即不设ZBFH体也能正确显示。 但这样做还有2个问题: 一是可能和原电脑上的造字文件有冲突。如你原用系统造字法造了字时,原来在这些文件夹下就有此文件,你再拷入可能会覆盖原文件,或根本就拷不进去,此时删也删不掉。这时你可将这个原系统造字文件随便改个别的名称,这个改了名的文件即为原造字的备份文件。再重启电脑,即可将由ZBFH.TTF改名为EUDC.TTE的文件拷进去。再重启电脑。 二是要想在WORD文档中嵌入此字体时,不能设置为链接字体名(如宋体),这样并不能嵌入字体,只有再设为ZBFH体时才能嵌入。 这样字体嵌入问题就解决了,但我在顶楼中提的问题还未解决。即用VBA设置ZBFH体时时灵时不灵,我百思不得其解!奇怪的是代码的上半部分中解决指定字符的“宋体”设置从未出错。 再重发一次自造字体及内码(又有更新) ZBFH.TTF不改名为EUDC.TTE也能像正常字体一样使用(直接复制到WINDOWS\FONTS下即可),主要是增加了一些数学和化学符号。 bsVvO9kt.rar (235.32 KB, 下载次数: 122)
[此贴子已经被作者于2006-6-11 10:18:49编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-14 11:15 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-6-14 15:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ssq1109兄: VBA我不懂,但我的经验,楼主在一楼说的问题,完全可以用查找替换解决。 查找:[x-y](x、y为字库中查找的对应的始、终字符) 替换:^&,ZBFH字体。
[此贴子已经被作者于2006-6-14 15:28:20编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-14 17:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

yuyvtul兄说得固然不错,但我的自造字符的UNICODE码并非连续的,多数和方正符号的内码一致(刻意如此),因此用范围表示([x-y])可能包括一些GB字符.

其实,我最希望搞清为何我的VBA代码会出现在同一台机上时灵时不灵的原因.

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 16:21 , Processed in 0.033048 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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