ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

求解MacroName:="FormatPhoneticGuide" '运行拼音指南 在vba中的初始化方法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-6-22 23:08 来自手机 | 显示全部楼层 |阅读模式
问题:我想初始化关于音标的字体对齐方式为居中,字体为Microsoft YaHei UI,偏移量为2磅,字体大小为4磅,用了sentkeys的方法实现 但不稳定容易有乱码  需要手工更改,想向大虾请教这个拼音指南宏MacroName:="FormatPhoneticGuide"的实始方法???
有什么代码可以打印出这个宏默认的内置参数列表及默认值??在哪可以找到相关手册??
代码如下:
Sub 逐词加注拼音()
'逐词加注拼音,避免逐句加拼音的缺点(句子过长有的字加不上拼音)和逐字加拼音的缺点(多音字错误更多)
'word标注的拼音并不十分准确,尤其是多音字,需要人工检查。
'sendkeys方法不是十分可靠。
Dim Num As Long, WdNum As Long, i As Integer
Dim WdRng As Range

Application.ScreenUpdating = False
With ActiveDocument
    '开始标拼音
    WdNum = .Words.Count
    For Num = WdNum To 1 Step -1 '必须采用逆序。正序会漏标拼音
         Set WdRng = .Words(Num)
         With WdRng
            If AscW(.Text) > 255 Or AscW(.Text) < -255 Then '如果是汉字
               .Select
               SendKeys "{enter}", 2 '发送按键Enter
               Application.Run MacroName:="FormatPhoneticGuide" '运行拼音指南
            End If
         End With
    Next Num

End With
Application.ScreenUpdating = True
MsgBox "完成"
End Sub

TA的精华主题

TA的得分主题

发表于 2022-6-25 13:12 | 显示全部楼层
可试试如下代码的效果(默认初始化方法,并非指定)
  1. Sub test()
  2.     '用拼音指南对全文档或选定区域加注拼音并修改相关格式参数
  3.     Dim myRange As Range
  4.     Dim aSentence As Range
  5.    
  6.     Application.ScreenUpdating = False
  7.     Set myRange = IIf(Selection.Type = wdSelectionIP, ActiveDocument.Content, Selection.Range)
  8.     ActiveDocument.ActiveWindow.View.ShowFieldCodes = False
  9.     For Each aSentence In myRange.Sentences
  10.         If aSentence.Text Like "*[一-龥]*" Then
  11.             aSentence.Select
  12.             Dialogs(986).Show 1 'FormatPhoneticGuide
  13.         End If
  14.     Next
  15.    
  16.     '以下代码可用于调整拼音文本格式参数,可按需选择使用(实为修改EQ域代码)
  17.     ActiveDocument.ActiveWindow.View.ShowFieldCodes = True
  18.     With myRange.Find
  19.         .Execute findtext:="\* jc^# ", replacewith:="\* jc0 ", Replace:=2 '对齐,0为居中,自行查看数值与对齐方式的关系
  20.         .Execute findtext:="""Font:宋体""", replacewith:="""Microsoft YaHei UI""", Replace:=2 '仅修改EQ域中字体名称
  21. '        .Execute findtext:="\* hps^# ", replacewith:="\* hps8 ", Replace:=2 '偏移量,假设原为一位数
  22. '        .Execute findtext:="\up ^#^#(", replacewith:="\up 12(", Replace:=2 '拼音与汉字间距,假设原为两位数
  23.         '以下查找代码用于修改拼音字体大小及名称
  24.         .Text = "\up ^#"
  25.         Do While .Execute
  26.             With .Parent
  27.                 .SetRange .End + .MoveEndUntil("("), .End + .MoveEndUntil(")") - 1  '定位拼音字符
  28.                 .Font.Size = 8 '修改字体大小
  29.                 .Font.Name = "Microsoft YaHei UI '修改字体名称"
  30.                 .Collapse 0
  31.             End With
  32.         Loop
  33.     End With
  34.     ActiveDocument.ActiveWindow.View.ShowFieldCodes = False
  35.     Application.ScreenUpdating = True
  36. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-6 09:38 , Processed in 0.025669 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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