我把气球注释改成了脚注,也用了作者的名字。 我需要作者的名字加粗,但我无法让我的代码阅读脚注。 我的问题是设置:o脚注
我尝试调用strAuthor并将其加粗,但由于它不再是注释.author,因此我无法再将其设置为现在在脚注中。 我在互联网上尝试了很多例子,但我就是无法让它们工作:StackOverflow的 如何使字符串加粗;使用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)
但它不喜欢"范围:= 向前",所以我做了
Selection.Range.Words.Last.Words (2) invalid use of a property
通常有多种方法可以实现这样的事情,但关键通常是使用专用的Range
对象。
在下面的代码中,基于问题中的代码,Range
对象在Footnotes
循环中分配给每个单独的Footnote
对象。然后它被折叠到它的终点,开始向后延伸两个单词。(为了更好地理解其工作原理,请考虑选择脚注,按右箭头,然后按 ctrl+shift+向左箭头两次以选择最后两个单词。
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
返回一个包含最后一个单词的Range
对象。由于它只包含一个单词 - 最后一个 - Words(2)
找不到任何可以使用的东西。
另一个错误的原因是无法将Range
分配给Footnote
或Footnotes
对象。它们是完全不同的东西,完全...
不是很熟悉单词对象,但试试这个。 为我的几个测试工作。
基本上,它循环遍历所有脚注。 并使用单词的索引将该单词的粗体属性设置为 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