У меня есть текстовый документ (отчет), и в этом документе я импортирую много текстовых файлов с полями, подобными этим:
{INCLUDETEXT "C:\\PATH\\TOXMLFILES\\Request.xml" \*CHARFORMAT}
Также я обновляю все эти поля макросом при открытиидокумент ...
Sub AutoOpen()
With Options
.UpdateFieldsAtPrint = True
.UpdateLinksAtPrint = True
End With
ActiveDocument.Fields.Update
End Sub
Теперь мне нужно выделить текст этих импортированных XML-файлов (в полях IncludeText
) между <faultstring></faultstring>
тегами
Вот код, который я получил здесьв stackoverflow для выделения текста (выделение жирным шрифтом)
Sub BoldBetweenQuotes()
' base for a quotes finding macro
Dim blnSearchAgain As Boolean
Dim blnFindStart As Boolean
Dim blnFindEnd As Boolean
Dim rngFind As word.Range
Dim rngFindStart As word.Range
Dim rngFindEnd As word.Range
Set rngFind = ActiveDocument.content
Set rngFindStart = rngFind.Duplicate
Do
' set up find of first of quote pair
With rngFindStart.Find
.ClearFormatting
.Text = "<faultstring>"
.Replacement.Text = ""
.Forward = True
.wrap = wdFindStop
blnFindStart = .Execute
End With
If blnFindStart Then
rngFindStart.Collapse wdCollapseEnd
Set rngFindEnd = rngFindStart.Duplicate
rngFindEnd.Find.Text = "</faultstring>"
blnFindEnd = rngFindEnd.Find.Execute
If blnFindEnd Then
rngFindStart.End = rngFindEnd.Start
' make it bold
rngFindStart.Font.Bold = True
rngFindStart.Start = rngFindEnd.End
rngFindStart.End = rngFind.End
blnSearchAgain = True
Else
blnSearchAgain = False
End If
Else
blnSearchAgain = False
End If
Loop While blnSearchAgain = True
End Sub
Проблема в том, что когда я запускаю макрос в своем документе Word (с полями IncludeText
), он продолжает циклически повторять и выделять жирным шрифтом только первое появление текстамежду тегами faultstring.Когда я запускаю его в новом документе Word с некоторыми случайными текстовыми и ошибочными тегами, он работает хорошо ...
РЕДАКТИРОВАТЬ: Оказывается, проблема в том, что теги faultstring находятся внутри полей IncludeText
.Мне нужно превратить поля в статический текст после открытия документа и обновления полей.Как я могу это сделать?