Добрый день!
У меня есть небольшая проблема: есть текст и в нем много раз встречаются выражения с полями вида: "C. 34", не знаю, как отобразить, т.е. в другом режиме Коды/значения полей это выглядит так: "С. { PAGE \* Arabic \* MERGEFORMAT }".
Как можно удалить такие поля во всем документе сразу? Причем хотелось бы, чтобы удалялись только эти поля (есть еще другие) и лишние пробелы до или после текста.
Выручите пожалуйста. Пример приложил.
[вложение удалено администратором]
То есть нужно удалить все поля PAGE и текст, который находится слева после пробела?
Если так. То само поле удалить, думаю, не сложно. Сложность в поиске левого текста.
То есть макросу надо слева через пробел перейти к слову, затем нужно найти следующий пробел и до него удалить слово. А если пробела не будет, а что-то другое, то как удалять?
Да. Надо удалить:
Слева от текста: символы"стр." потом "пробел" потом ПОЛЕ потом опять "пробел"
Справа от текста: "пробел" потом символы "стр." потом "пробел" потом ПОЛЕ
Я посмотрел - пробелы всегда есть (штук 150 таких надписей и везде есть пробелы).
В этом случае сложность:
Слева от текста: символы"С." потом "пробел" потом ПОЛЕ потом опять "пробел"
Слева от "С." что может быть? Пробел или что-то другое? Макросу нужно обнаружить "C.". Вы пишите, что у вас "С.", а в файле пример "стр.". То есть текст может быть разный. Нужно найти начало и конец этого текста, чтобы удалить.
Я думаю ориентироваться на пробелы, но если спереди не будет пробела, то тогда не известно, на что ориентироваться.
Да, это я заблудился в тексте. У меня есть и варианты со "С.", но очень мало, буквально в 3 местах встречается. В основном, со "стр."
Впереди "стр." это точно! Больше ничего. Во всяком случае, в нескольких моих текстах так, а других пока нет. Надо, наверное, искать сначала строки "стр."? как у меня во 2 примере.
Сложность найти, где начинается "стр.".
Или у вас всегда встречается "стр."? И макросу можно просто слева от номера удалять 5 символов не глядя?
"стр." - четыре символа и пробел после "стр.".
Да, я думаю, можно так сделать. Других символов нет. И точно везде есть пробел после стр.
Я сам хотел удалить такие сочетания стр. с полем с помощью замены. Но с полями никак не получается.
Макрос
Sub Макрос()
Dim rng As Range, rng2 As Range, i As Long
'1. Откл. монитора.
Application.ScreenUpdating = False
'2. Цикл по всем полям, какие есть в тексте файла (сноски, колонтитулы и другое не учитывается).
For i = ActiveDocument.Fields.Count To 1 Step -1
' Если поле "PAGE".
If ActiveDocument.Fields(i).Type = wdFieldPage Then
' Присваиваем имя фрагменту файла, где находится поле.
Set rng = ActiveDocument.Fields(i).Result
' Включаем в начало нашего фрагмента пять символов.
rng.MoveStart Unit:=wdCharacter, Count:=-5
' Включаем пробел, который может быть слева или справа.
rng.MoveStartWhile Cset:=" ", Count:=wdBackward
rng.MoveEndWhile Cset:=" ", Count:=wdForward
' Удаление текста, который перед полем, и поля.
' Без Select не получилось удалить.
rng.Select
Selection.Delete
End If
Next i
'3. Вкл. монитора.
Application.ScreenUpdating = True
'4. Сообщение.
MsgBox "Готово!", vbInformation
End Sub
Получилось! Огромное спасибо! Выручили!