> 技术文档 > VBA【字体替换】VBA替换微软雅黑字体为=正常中文=(word)_vba修改字体微软雅黑

VBA【字体替换】VBA替换微软雅黑字体为=正常中文=(word)_vba修改字体微软雅黑


项目场景:VBA 解决 word字体不生效,一直是微软雅黑

问题描述

文档字符怎么应用字体样式都是微软雅黑
VBA【字体替换】VBA替换微软雅黑字体为=正常中文=(word)_vba修改字体微软雅黑

原因剖析

其实不能改变的字体跟正常字体编码不一样,隶属字体库位置为“汉字字根”、“cjk偏旁部首”。我们可以通过Alt+X快捷键查看字符代码

解决方法

方法一:Ocr识别

网络上网友说,用识别文章的方式,亲测好用

方法二:用VBA

实际上,VBA要做的就是一个个匹配,将错误的字根Replace替换成对应的正确文字。就是这句代码

Selection.Text = charWillReplace \'如果用Selection的TypeText方法,则光标不会选中

比如:

  • 第一个字根:转成文字民
  • 第二个字根:转成文字门
  • 第三个字根:转成文字大

然后有多少个字根要转换呢?如下:

  1. 选中错误文字后,查看所属的字符位置。
    VBA【字体替换】VBA替换微软雅黑字体为=正常中文=(word)_vba修改字体微软雅黑
  2. 点击两个蓝框查看将来需要替换的字根列表
    VBA【字体替换】VBA替换微软雅黑字体为=正常中文=(word)_vba修改字体微软雅黑

附上代码

Sub test0202_【字体】乱码字被替换成正常字() On Error GoTo errorHandle Dim dictionaryCharParams As Object Dim charWillReplace As String Set dictionaryCharParams = initDictionaryParams With ActiveDocument.Range.Find .ClearFormatting .Replacement.ClearFormatting .Wrap = wdFindStop .Format = False .MatchWildcards = True \'由于字根粘贴时变成乱码,【VBA录制模式官方】建议把十进制转成字符形式,牛。 .Text = \"[\"