У меня есть макрос Word, который позволяет поместить его / ее курсор в любом месте документа Word, и он находит и сохраняет текст Заголовок 1, Заголовок 2 и Заголовок 3, который на выше текст, выбранныйПользователь по порядку захватывает главу, раздел и подраздел, связанный с любым предложением в документе.
В настоящее время я использую приведенный ниже код, который перемещается по документу построчно, пока не будет найден стиль, содержащий «Заголовок х».Когда я выполнил это задание, я переместился на количество строк, которое я переместил, чтобы перейти к заголовку 1, которое может быть много страниц.
Как вы можете себе представить, это неловко, занимает много времени (иногда более 60 секунд) и визуально мешает.
Код ниже - это та подпрограмма, которая идентифицирует заголовок.
Dim str_heading_txt, hdgn_STYLE As String
Dim SELECTION_PG_NO as Integer
hdng_STYLE = Selection.Style
Do Until Left(hdng_STYLE, 7) = "Heading"
LINESUP = LINESUP + 1
Selection.MoveUp Unit:=wdLine, COUNT:=1
Selection.HomeKey Unit:=wdLine
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
hdng_STYLE = Selection.Style
'reached first page without finding heading
SELECTION_PG_NO = Selection.Information(wdActiveEndPageNumber)
If SELECTION_PG_NO = 1 Then 'exit if on first page
a_stop = True
Exit Sub
End If
Loop
str_heading_txt = Selection.Sentences(1)
Я попробовал другой подход ниже, чтобы устранить проблемы с прокруткой и производительностью, используя команду Range.Find ниже.
У меня проблемы с выбором диапазона выделения для перехода к тексту со стилем "Заголовок 1".Код выбирает предложение при первоначальном выборе, а не текст со стилем «Заголовок 1».
В идеале команда «Найти» приведет меня к любому стилю, содержащему «Заголовок», но при необходимости я могу отдельно кодировать «Заголовок 1», «Заголовок 2» и «Заголовок 3».
Какие изменения в коде необходимы для выбора «Заголовка 1» или, альтернативно, для выбора «Заголовка»?
Dim str_heading_txt, hdgn_STYLE As String
Dim Rng As Range
Dim Fnd As Boolean
Set Rng = Selection.Range
With Rng.Find
.ClearFormatting
.Style = "Heading 1"
.Forward = False
.Execute
Fnd = .Found
End With
If Fnd = True Then
With Rng
hdng_STYLE = Selection.Style
str_heading_txt = Selection.Sentences(1)
End With
End If
Любая помощь искренне приветствуется.