Word 宏 - 在页面底部的脚注部分上标所有脚注编号

问题描述 投票:0回答:1

我想要 Office Word 中的一个宏,它可以在页面底部脚注部分的所有脚注数字上标上标。

注意:这是我想要上标的页面bottom处的脚注编号,而不是正文中的脚注编号。参见下图。

这篇文章提供了一个看似关键的提示。但这有点偏离主题。可悲的是,我无法对其进行逆向工程以使其为我工作,人工智能也无法做到这一点。以下是来自用户 Timothy Rylatt 的有用信息:

Word 文档由许多故事范围构成,其中之一是脚注故事。要使脚注编号仅在脚注中成为非上标,您可以在脚注故事中执行查找和替换,如下所示。

Sub ApplyChicagoStyle()
   With ActiveDocument.StoryRanges(wdFootnotesStory).Find
      .Style = ActiveDocument.Styles(wdStyleFootnoteReference)
      .Replacement.Style = ActiveDocument.Styles(wdStyleFootnoteText)
      .Replacement.Font.Superscript = False
      .Format = True
      .Execute Replace:=wdReplaceAll
   End With
End Sub

错误格式说明:

正文及文内脚注编号


1 [非上标,底部脚注编号] 脚注底部文本

ChatGPT 和 CoPilot 非常接近。以下是他们的宏以获取灵感。但两者都失败了,因为他们在底部添加了脚注text,而不是数字本身。然而,这些人工智能设法编写了在正文中正确标注脚注的宏。也许页面底部的脚注部分有一些不同的格式,这导致它们无法正常工作?

聊天GPT:

Sub SuperscriptFootnoteNumbers()
    Dim footnote As Footnote
    Dim fnRange As Range
    
    ' Loop through each footnote in the document
    For Each footnote In ActiveDocument.Footnotes
        ' Get the range of the footnote's number (not the text)
        Set fnRange = footnote.Range
        
        ' Superscript the first character, which is the footnote number
        fnRange.Font.Superscript = True
    Next footnote
End Sub

副驾驶:

Sub SuperscriptFootnoteNumbersInText()
    Dim footnote As Footnote
    Dim rng As Range
    Dim i As Integer
    For Each footnote In ActiveDocument.Footnotes
        Set rng = footnote.Range.Paragraphs(1).Range
        i = 1
        Do While IsNumeric(Mid(rng.Text, i, 1))
            rng.Characters(i).Font.Superscript = True
            i = i + 1
        Loop
    Next footnote
End Sub
vba ms-word superscript footnotes
1个回答
0
投票

很简单:

Sub ApplySuperscriptToFootnoteReference()
   With ActiveDocument.StoryRanges(wdFootnotesStory).Find
      .Style = ActiveDocument.Styles(wdStyleFootnoteReference)
      .Replacement.Font.Superscript = True
      .Format = True
      .Execute Replace:=wdReplaceAll
   End With
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.