如何使用 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
分配给 Footnote
或 Footnotes
对象。它们是不同的东西,完全...
我已将气球评论更改为脚注,并附上作者的姓名。我需要作者的名字以粗体显示,但我无法让我的代码阅读脚注。我的问题在于设置: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
分配给 Footnote
或 Footnotes
对象。它们是不同的东西,完全...