Тема: Макрос для поиска определённого объекта в формуле
Целый день угрохал чтобы найти похожие макросы и изучить комманды но время поджимает. Подскажите пожалуйста. Правда это не эксель а ворд
Я преподаватель. студенты присылают работы с заменой слов на формулы Eq
Я очищал эти формулы с помощью макроса:
Sub Макрос()
Dim fld As Field, i As Long
'1. Скрытие кодов полей, если вдруг юзер их отобразил для каких-то своих целей.
ActiveWindow.View.ShowFieldCodes = False
For i = ActiveDocument.Fields.Count To 1 Step -1
'2. Присваивание программного имени полю.
Set fld = ActiveDocument.Fields(i)
' Если это eq-поле.
If fld.Type = wdFieldFormula Then
'3. Выделение поля (с помощью Range не получилось работать).
fld.Select
'4. Копирование поля.
Selection.Copy
'5. Вставка поля в виде текста.
Selection.PasteAndFormat (wdFormatPlainText)
End If
Next i
'5. Сообщение, чтобы юзер понял, что макрос закончил работу.
MsgBox "Готово.", vbInformation
End Sub
Но студенты начали вставлять в формулы ещё уплотнённый текст. т.е. теперь они к оригинальному слову добавлят синонимы и получается 3-4 слова, и синонимы делают уплотнением чтобы буквы в один ряд, и закрашивают белым цветом, а оригинальный текст остаётся обычным и всё это в формулу форматируют.
В итоге когда прогоняю через макрос текст, то содержимое формул(слова) все форматируются в одно уплотнённый символ.
Т.е. мне нужно убрать только синонимы, оригинальное слово оставить и убрать естественно потом форматирование формулой.
Сейчас я вроде как решил вопрос. Сначала я нажимаю на всём тексте правой кнопкой мыши и выбираю "коды\значения полей" для того чтобы можно было формулу редактировать.
Потом запускаю вот такой макрос:
Selection.Find.ClearFormatting
With Selection.Find.Font
.Spacing = -100
.Scaling = 1
End With
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
End Sub
Т.е. очищаю сначала от синонимов уплотнённых и потом предыдущим макросом всё подчищаю. НО! Вот этот последний макрос будет работать только если он два раза будет цикл делать на одном слове. Т.е. если к примеру через поиск искать уплотнённый текст, нажимаю поиск, - находит. Потом нажимаю ещё раз поиск и уже в этой формуле состоящей из двух синонимов и оригинального слова поиск акцент кидает именно на синонимы. И потом я могу удалить только синонимы.
Так вот как сделать чтобы макрос два раза цикл запускал за один шаг