如何使用 Word VBA 将每个脚注的最后两个单词加粗?

How do I make the last two words of each footnote bold using Word VBA?

我已将气球评论更改为脚注,并附上作者的姓名。我需要作者的名字以粗体显示,但我无法让我的代码阅读脚注。我的问题在于设置:oFootnote

我尝试调用 strAuthor 并将其设为粗体,但因为它不再是 comment.author 我无法再将其设置为现在在脚注中。我在互联网上尝试了很多示例,但我无法让它们工作: Whosebug 的如何将字符串设为粗体;使用 VBA 在 Word 中插入粗体文本 还有

 Set oFootnote = oDoc.Footnotes.Add(Range:=Selection.Range, Text:="Some text") 

我是练习生,请不要苛责我

'Convert comments to footnotes with Author name in bold
Dim i As Long
Dim oDoc As Document
dim oComment as Comments
Dim oFootnote As Footnotes

'Document is the ActiveDocument
Set oDoc = Application.ActiveDocument

'the author's name needs to be bold (the last two words in each footnote)
Set oFootnote = oDoc.Footnotes

    With oFootnote
      Selection.Range.Words.Last.Words (2)
        'Make the last two words bold'
        With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Font.bold = True
        End With
    End With
    Selection.Find.Execute
    'Set oFootnote = Nothing
  Next

我试过了

 Set oFootnote = oDoc.Footnotes Range:=Selection.Words.Last.Words(2) 

但它不喜欢 "Range:= onwards" 所以我做了

 Selection.Range.Words.Last.Words (2)                invalid use of a property

对单词对象不是很熟悉,但试试这个。为我的几个测试工作。

基本上它循环遍历所有脚注。并使用单词的索引将该单词的粗体 属性 设置为 true.

Sub Test()

    Dim oFootNote As Footnote
    Dim oLastIndex As Long

    For Each oFootNote In ActiveDocument.Footnotes

        oLastIndex = oFootNote.Range.Words.Count

        If oLastIndex > 2 Then
            oFootNote.Range.Words(oLastIndex).Bold = True
            oFootNote.Range.Words(oLastIndex - 1).Bold = True
        End If
    Next

End Sub

通常有不止一种方法可以实现这样的目标,但关键通常是使用专用的 Range 对象。

在下面的代码中,基于问题中的代码,Range 对象被分配给 Footnotes 循环中的每个单独的 Footnote 对象。然后它被折叠成它的 end-point 并且开始向后扩展两个单词。 (为了更好地理解这是如何工作的,想想 select 脚注,按 right-arrow,然后按两次 ctrl+shift+向左箭头 select 最后两个词。)

Dim oDoc As Document
Dim oFootnotes As Footnotes
Dim Ftnote As Footnote
Dim rngFootnote As Word.Range

'Document is the ActiveDocument
Set oDoc = Application.ActiveDocument

'the author's name needs to be bold (the last two words in each footnote)
Set oFootnotes = oDoc.Footnotes
For Each Ftnote In oFootnotes
    Set rngFootnote = Ftnote.Range
    rngFootnote.Collapse wdCollapseEnd
    rngFootnote.MoveStart wdWord, -2
    rngFootnote.Font.Bold = True
Next

请注意,问题中一个错误的原因是因为 Words.Last returns 包含最后一个单词的 Range 对象。因为它只包含一个词 - 最后一个 - Words(2) 找不到任何它可以使用的东西。

另一个错误的原因是无法将 Range 分配给 FootnoteFootnotes 对象。它们是不同的东西,完全...