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



我把气球注释改成了脚注,也用了作者的名字。 我需要作者的名字加粗,但我无法让我的代码阅读脚注。 我的问题是设置: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分配给FootnoteFootnotes对象。它们是完全不同的东西,完全...

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

基本上,它循环遍历所有脚注。 并使用单词的索引将该单词的粗体属性设置为 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

相关内容

  • 没有找到相关文章

最新更新