我有以下一段代码(不是我的),它为MS Word(2013)中的每个脚注添加了一个标签。
代码工作得很好,但如果它每次不添加制表符,而是简单地用制表符替换第一个字符(无论它是- tab,空格),它会工作得更好。
这样,如果宏运行两次,我就不会有两个制表符,等等。
Sub TabFootnotes()
For s = 1 To ActiveDocument.Footnotes.Count
ActiveDocument.Footnotes(s).Range.Select
With Selection
.Collapse Direction:=wdCollapseStart
.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
.TypeText Text:=vbTab
End With
Next
End Sub
无论如何,您都必须想出一种方法来确定第一个字符是否可替换。这是因为当你把空格换成别的东西时,这个东西就变成了脚注Range
的一部分。因此,当宏再次运行时,您需要知道是否必须保留或替换第一个字符。
Dim f As Footnote
For Each f In ActiveDocument.Footnotes
With f.Range.Characters(1)
If .Text = vbTab Or .Text = " " Then 'Use any other sensible detection logic here
.Text = vbTab
Else
.InsertBefore vbTab
End If
End With
Next