我正在 Word 文档中建立一个索引,其中包含定义。我的索引将如下所示:
超级英雄 - 超人......17
巴士 - 很长的汽车,像腊肠犬......28
猫 - 这是一种小动物......17
ETC...
在我的文档中,文本如下所示:
然后有一个超级英雄- 超人。
“超级英雄” 被加下划线(无法找到如何加下划线,因此我将 SO 加粗)。
有没有办法在将其添加到索引时保留此下划线?或者,是否有办法使用 VBA 扫描我的索引,并在之前的每一行中为文本添加下划线-
?
编辑:主要想法是,我有一份 120 多页的文档,它变化得相对频繁。我有一个宏可以扫描文档,查找定义(定义为“[某物] - 意思”)。然后它将这些定义添加到索引中,但它会删除文档中存在的下划线。我想将其重新添加到索引中。
也许我可以扫描所有定义,就像我添加到索引时所做的那样,并检查定义是否在文档的最后一节中?我如何在 VBA 中执行此操作,就像类似If selection.section = activedocument.sections.count Then
,只是您无法执行此操作.Section
来查看我所在的节号。\
这是我的一些代码。只要我的索引比 少一个部分activedocument.sections.count
,我就可以让它工作,尽管它是最后一部分。无论如何,这有效,我可以获取我的文本,但需要继续查看如何只为第一位加下划线:
Sub underline_Index_Definitions()
Dim myDoc As Word.Document
Dim rngDoc As Word.Range
Dim rngXE As Word.Range
Dim numParas&
Dim bFound As Boolean
Dim rng As Word.Range
Set myDoc = ActiveDocument
Set rngDoc = myDoc.Content
Set rngXE = rngDoc.Duplicate
bFound = True
Debug.Print "You have : " & myDoc.Sections.Count & " sections."
With rngDoc.Find
.ClearFormatting
.ClearAllFuzzyOptions
.Text = "- means"
.Format = False
.Wrap = wdFindStop
End With
Do While bFound
bFound = rngDoc.Find.Execute
If bFound Then
Set rngXE = rngDoc.Duplicate
rngXE.Select
If rngXE.Information(wdActiveEndSectionNumber) = myDoc.Sections.Count - 1 Then
rngXE.Select
End If
End If 'bFound
Loop
End Sub
答案1
尽管有些笨拙,我还是能够完成它:
Sub underline_Index_Definitions()
Dim myDoc As Word.Document
Dim rngDoc As Word.Range
Dim rngXE As Word.Range
Dim numParas&
Dim bFound As Boolean
Dim rng As Word.Range
Set myDoc = ActiveDocument
Set rngDoc = myDoc.Content
Set rngXE = rngDoc.Duplicate
bFound = True
Debug.Print "You have : " & myDoc.Sections.Count & " sections."
With rngDoc.Find
.ClearFormatting
.ClearAllFuzzyOptions
.Text = "- means"
.Format = False
.Wrap = wdFindStop
End With
Do While bFound
bFound = rngDoc.Find.Execute
If bFound Then
Set rngXE = rngDoc.Duplicate
rngXE.Select
If rngXE.Information(wdActiveEndSectionNumber) = myDoc.Sections.Count - 1 Then
'Found definition in the index
Set rngXE = rngXE.Paragraphs(1).Range
rngXE.Select
'Now, starting with the first character, go until the - and underline
Dim startC&, endC&, x&
x = 0
Do Until rngXE.Characters(x + 1) = "-"
Debug.Print rngXE.Characters(x + 1)
If (x + 1) > rngXE.Characters.Count Then Exit Do
x = x + 1
Loop
Set rngXE = myDoc.Range(Start:=rngXE.Characters(1).Start, End:=rngXE.Characters(x).End)
rngXE.Select
rngXE.Font.Underline = wdUnderlineSingle
End If
End If 'bFound
Loop
End Sub
基本上,我知道我的索引是一个新的部分,位于文档的最末尾。因此,我只需让宏-
在整个文档中查找,但只有当它到达索引(由 确定Activedocument.sections.count - 1
)时,才会循环遍历每个段落并抓取 前面的文本-
。
如果有人有任何提示/想法,请告诉我,因为我仍在学习 Word VBA(也许很明显)