一个适用于 Word(Mac/Win 通用) 的 VBA 宏:把所有“上角标格式的 0‑9”以及 “Unicode 上角标数字 ⁰‑⁹” 批量删除。

一个适用于 Word(Mac/Win 通用) 的 VBA 宏:把所有"上角标格式的 0‑9"以及 "Unicode 上角标数字 ⁰‑⁹" 批量删除。

vbnet 复制代码
'========================================
' StripSupDigitsInWord.bas
' 删除 Word 文档中的所有上角标数字
'   1) 字体属性为 Superscript 的 0-9
'   2) Unicode 上角标数字 ⁰¹²³⁴⁵⁶⁷⁸⁹
'========================================
Option Explicit

Sub StripSupDigitsInWord()
    Dim sr As Range
    Application.ScreenUpdating = False
    
    ' 遍历正文、页眉页脚、脚注等所有 StoryRanges
    For Each sr In ActiveDocument.StoryRanges
        Call RemoveSupDigitsInRange(sr)
        Do While Not (sr.NextStoryRange Is Nothing)
            Set sr = sr.NextStoryRange
            Call RemoveSupDigitsInRange(sr)
        Loop
    Next sr
    
    Application.ScreenUpdating = True
End Sub


Private Sub RemoveSupDigitsInRange(ByVal rng As Range)
    Dim f As Find
    Dim codes As Variant
    Dim i As Long
    
    '------① 删掉"格式为上角标"的普通数字 0-9 ------'
    Set f = rng.Duplicate.Find
    With f
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = "[0-9]"          ' 匹配任意数字
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindStop
        .Format = True
        .Font.Superscript = True ' 仅找上角标
        .MatchWildcards = True
    End With
    
    Do While f.Execute
        f.Parent.Delete                ' 删除命中的字符
        rng.Collapse wdCollapseStart   ' 收缩到起点继续
        Set f = rng.Duplicate.Find     ' 重新绑定范围
        With f
            .Text = "[0-9]"
            .Replacement.Text = ""
            .Format = True
            .Font.Superscript = True
            .MatchWildcards = True
        End With
    Loop
    
    '------② 删掉 Unicode 上角标数字 ------'
    codes = Array(&H2070, &HB9, &HB2, &HB3, _
                  &H2074, &H2075, &H2076, &H2077, &H2078, &H2079)
    For i = LBound(codes) To UBound(codes)
        With rng.Find
            .ClearFormatting
            .Replacement.ClearFormatting
            .Text = ChrW(codes(i))
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindStop
            .Format = False
            .MatchWildcards = False
            .Execute Replace:=wdReplaceAll
        End With
    Next i
End Sub

使用步骤

  1. Word 打开文档 → 工具/开发工具 ▸ Visual Basic (⌥F11)

  2. 插入 ▸ 模块,粘贴上述代码。

  3. 关闭 VBE,回到 Word:开发工具 ▸ 宏,运行 StripSupDigitsInWord

  4. 建议先备份文档;如果开启了"修订",可先关闭或接受更改以提升速度。

想只处理选定文本,把 StripSupDigitsInWord 里遍历 StoryRanges 的部分改成:
Call RemoveSupDigitsInRange(Selection.Range) 即可。

相关推荐
苦逼的猿宝1 天前
仓储管理系统设计与实现
python·word·markdown
ew452181 天前
【Java】Apache POI 终极封装:支持多表格循环、图片插入、日期格式化的Word导出工具类(兼容POI3.17+)
java·word·apache
微软Nav/BC专家2 天前
Microsoft Dynamics 365 Business Central Word Add-in如何安装
word·微软erp
大C聊AI2 天前
标书高效制作:Word 排版快捷键 + AI 工具组合工作流
word·办公技巧·效率提升·招投标·智标领航
jianwuhuang822 天前
豆包输出word
人工智能·ai·chatgpt·word·deepseek·ai导出鸭
chatexcel3 天前
ChatExcel AI文档上线:AI自动生成Word报告的完整工作流
人工智能·word
俊哥工具3 天前
不用安装不收费!多功能U盘修复工具,解决大部分U盘故障
学习·pdf·word·excel·音视频
草丛中的蝈蝈4 天前
word目录中的一级标题编号和标题之间距离很大,但是内容里是正常的
word
Metaphor6924 天前
使用 Python 设置 Word 文档文本的颜色
python·word
usdoc文档预览4 天前
国产化踩坑:Vue3 / React / 小程序如何免插件实现 OFD 及复杂 Office 文档同屏预览
前端·javascript·react.js·小程序·pdf·word·office文件在线预览