第一篇文章,希望我这样做。
我有一个带有许多脚注的Word文档,这些脚注都是自定义标记,没有自动编号。自定义标记有两种类型:数字和字母。所以要么1,2,3或a,b,c。 我只想将带有字母标记的脚注转换成尾注。
我可以将所有脚注转换为尾注:
Sub ConvertFootnotesEndnotesTEST()
' Convert
ActiveDocument.Footnotes.Convert
With ActiveDocument.Range(Start:=ActiveDocument.Content.Start, End:= _
ActiveDocument.Content.End).FootnoteOptions
.Location = wdBottomOfPage
.NumberStyle = wdNoteNumberStyleLowercaseLetter
End With
' Renumbering
With ActiveDocument.Range(Start:=ActiveDocument.Content.Start, End:= _
ActiveDocument.Content.End).EndnoteOptions
.Location = wdEndOfDocument
.NumberingRule = wdRestartContinuous
.StartingNumber = 1
.NumberStyle = wdNoteNumberStyleLowercaseArabic
End With
End Sub
我认为规定上面的NumberStyle会起作用;它没有。我不是一个真正的程序员,只是一个敏锐的Word用户。 我也试过
If Selection.Footnotes.NumberStyle = wdNoteNumberStyleLowercaseLetter
Then Selection.Footnotes.Convert
但这也不起作用。
我非常感谢你的帮助!谢谢。
答案 0 :(得分:0)
无论出于何种原因,您都无法直接转换单个脚注。您也无法以您想要的方式查询数字样式;该数字样式将指示Word的连续字母注释,而不是自定义标记。因此,最好的方法可能是循环浏览文档中的每个脚注,确定它是否是您要转换的脚注,然后将其转换为脚注集合的成员(总是只包含一个注释)。我就是这样做的:
Sub ConvSomeFootnotes()
'Declare some variables.
Dim objFNote As Footnote
Dim objDoc As Document
Set objDoc = ActiveDocument
'Loop through each footnote in the document's footnotes collection.
For Each objFNote In objDoc.Footnotes
'This only works because you are using custom marks, which can be read as regular text. If you were using standard sequential markers you'd need a different approach.
'Check that the text of the footnote reference matches the character class that contains all lowercase letters.
If objFNote.Reference.Text Like "[a-z]" Then
'If it does, we convert all of the footnotes within the range (which in this case happens to be just the one footnote we are looking at).
objFNote.Reference.Footnotes.Convert
End If
Next objFNote
End Sub
如评论中所述,这仅适用于您使用自定义标记。如果你不是,你需要另一种方法来判断脚注是字母还是编号(更复杂的方法)。我在Word 2010上测试了这个;我无法确定它是否可以在Mac上或早期版本的Word中正常工作。