Я строю индекс в документе Word, который будет определений. Мой индекс будет выглядеть так:

Супергерой - тот, кто супер существо ..... 17
Автобус - это длинный автомобиль, похожий на сосиску ..... 28
Кошка - это маленькое животное ......... 17

так далее...

В моем документе текст выглядит так:

И еще есть Супергерой - кто-то, кто является супер существом.

С подчеркиванием "Супергероя" (не смог найти, как подчеркнуть, поэтому я выделил СЦ).

Есть ли способ сохранить это подчеркивание при добавлении его в индекс? В качестве альтернативы, есть ли способ с помощью 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 ответ1

0

Я смог сделать это, хотя и немного клудгилой

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 (возможно, очевидно)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .