Чтобы найти текст, который слишком длинный, найдите первые 255 символов строки, а затем расширьте найденный диапазон до дополнительных символов. ИЛИ разбейте строку на 255-символьные «укусы» и последовательно выполните их поиск (всегда расширяя первый найденный диапазон до конечной точки каждого последующего найденного диапазона).
Можно использовать текст, который слишком длинен для замены, но не использовать Replace
. Вместо этого присвойте строковое значение найденному диапазону в цикле. (Обратите внимание, что Wrap
необходимо установить на wdFindStop
.) Пример
Dim bFound As Boolean
Dim replacementText as String
Dim findText as String, excessText as String
Dim excessChars as Long, bTooLong as Boolean
findText = "Text to be found..."
If Len(findText) > 255 Then
bToolLong = True
excessText = Mid(findText, 256)
excessChars = Len(excessText)
findText = Left(findText, 255)
End If
replacementText = "some long string greater than 256 characters"
With Rng.Find
.Text = findText
'.Replacement.Text = "" 'replace text won't exceed character limitation'
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
bFound = Rng.Find.Execute
Do While bFound
If bTooLong Then
Rng.End = Rng.End + excessChars
'Possible to check findText against the range
'If Rng.Text <> findText Then 'do something
End If
Rng.Text = replacementText
Rng.Collapse wdCollapseEnd
bFound = Rng.Find.Execute
Loop