乐于分享
好东西不私藏

Word文档Unicode 上下标转换Times New Roman方法

Word文档Unicode 上下标转换Times New Roman方法

一个小小的下角标:学习始于提问,成于执行
上次所提到的Unicode 上下标转换Times New Roman的问题,通过AI辅助,自己摸索,找到了解决方案,下面分享给大家。
第一步:进入 VBA 编辑器

通过菜单打开 VBA

如果你想找 Alt + F11 对应的菜单入口,可以这样:

先打开“开发工具”

点击:

文件 → 选项 → 自定义功能区

右边勾选:

开发工具

然后确定。

回到 Word 顶部菜单,会多出一个:

开发工具

点击里面的:

Visual Basic

第二步:粘贴宏代码

把下面这段复制进去:

Sub ConvertUnicodeSubAndSupToWordFormat()

    Dim subChars As Variant

    Dim subTexts As Variant

    Dim supChars As Variant

    Dim supTexts As Variant

    Dim i As Integer

    ‘ Unicode 下标数字

    subChars = Array(ChrW(&H2080), ChrW(&H2081), ChrW(&H2082), ChrW(&H2083), ChrW(&H2084), _

                     ChrW(&H2085), ChrW(&H2086), ChrW(&H2087), ChrW(&H2088), ChrW(&H2089))

    subTexts = Array(“0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”)

    ‘ Unicode 上标数字和正负号

    supChars = Array(ChrW(&H2070), ChrW(&HB9), ChrW(&HB2), ChrW(&HB3), ChrW(&H2074), _

                     ChrW(&H2075), ChrW(&H2076), ChrW(&H2077), ChrW(&H2078), ChrW(&H2079), _

                     ChrW(&H207A), ChrW(&H207B))

    supTexts = Array(“0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “+”, “-“)

    ‘ 转换 Unicode 下标

    For i = 0 To UBound(subChars)

        With ActiveDocument.Content.Find

            .ClearFormatting

            .Replacement.ClearFormatting

            .Text = subChars(i)

            .Replacement.Text = subTexts(i)

            .Replacement.Font.Name = “Times New Roman”

            .Replacement.Font.Subscript = True

            .Replacement.Font.Superscript = False

            .Forward = True

            .Wrap = wdFindContinue

            .Format = True

            .MatchCase = False

            .MatchWholeWord = False

            .MatchWildcards = False

            .Execute Replace:=wdReplaceAll

        End With

    Next i

    ‘ 转换 Unicode 上标

    For i = 0 To UBound(supChars)

        With ActiveDocument.Content.Find

            .ClearFormatting

            .Replacement.ClearFormatting

            .Text = supChars(i)

            .Replacement.Text = supTexts(i)

            .Replacement.Font.Name = “Times New Roman”

            .Replacement.Font.Superscript = True

            .Replacement.Font.Subscript = False

            .Forward = True

            .Wrap = wdFindContinue

            .Format = True

            .MatchCase = False

            .MatchWholeWord = False

            .MatchWildcards = False

            .Execute Replace:=wdReplaceAll

        End With

    Next i

    MsgBox “Unicode 下标和上标已转换为 Word 正规格式。”

End Sub

第三步:运行
运行 → 运行子过程/用户窗体

也可以点工具栏上的绿色三角形运行按钮。

成果展示