一个适用于 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
使用步骤
-
Word 打开文档 → 工具/开发工具 ▸ Visual Basic (⌥F11)
-
插入 ▸ 模块
,粘贴上述代码。 -
关闭 VBE,回到 Word:
开发工具 ▸ 宏
,运行StripSupDigitsInWord
。 -
建议先备份文档;如果开启了"修订",可先关闭或接受更改以提升速度。
想只处理选定文本,把
StripSupDigitsInWord
里遍历 StoryRanges 的部分改成:
Call RemoveSupDigitsInRange(Selection.Range)
即可。