Проблема с работой с большими блоками текста в Word заключается в том, что такие операции, как Find и Replace, могут выполняться только с текстовыми строками Find из 255 символов или менее, не вызывая ошибки. После того, как вы импортируете свой текст и назначите его строковой переменной, вы можете использовать Len (), чтобы определить длину строки, а затем использовать Left () Mid () и Right (), чтобы разбить большую строку на более короткие куски по 250 символов. каждый. Вот код, который я написал для поиска и замены:
With Selection.Find
y = Len(Selection.Text)
Select Case y
Case Is <= 250
x = 1
.Text = stFound
.Execute Replace:=wdReplaceAll
Case Is <= 500
Dim stFound2 As String
x = 2
z = Len(stFound) - 250
stFound1 = Left(stFound, 250)
stFound2 = Right(stFound, z)
Case Is <= 750
Dim stFound2 As String
Dim stFound3 As String
x = 3
stFound1 = Left(stFound, 250)
stFound2 = Mid(stFound, 251, 249)
stFound3 = Right(stFound, Len(stFound) - 500)
End Select
End With
Затем я использовал цикл For Next для запуска поиска и замены в каждой строке.
В вашей ситуации будет важно не разбивать строки в середине слова. Для этого вы можете использовать функцию InStr (), чтобы найти положение пробелов в вашей строке, а затем разбить текст в соответствии с тем, где находятся пробелы. Я не стал бы пытаться использовать функцию Split () для необработанного текста, так как в зависимости от размера строки вы можете столкнуться с ошибкой Subscript Out of Range.
Как только текст разбит на части, пригодные для использования, используйте функцию Split (), чтобы отправить каждое слово в массив, а затем выполните следующий код, чтобы поместить каждое слово в отдельную строку или абзац:
Dim stTxt as String
dim stWord as String
dim stArr() as String
dim x as long
stTxt = 'One of your text strings
stArr() = Split(stTxt)
For x = LBound(stArr()) to UBound(stArr())
stWord = stArr(x) & "^p"
Selection.Typetext stWord
Next