Читаем Интернет-журнал "Домашняя лаборатория", 2007 №3 полностью

Selection.Find.ClearFormatting

Selection.Find.ParagraphFormat.Alignment = wdAlignParagraphLeft

Selection.Find.Replacement.ClearFormatting

Selection.Find.Replacement.ParagraphFormat.Alignment = wdAlignParagraphJustify

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 Replace:=wdReplaceAll

Насколько помнится, при записи макроса мы вызывали функцию замены Word для изменения всего выравнивания абзацев по левому краю на выравнивание по ширине. И вот перед нами эта функция, вызов которой записан на языке VBA. По всей видимости, строчка "Selection.Find.ClearFormatting" означает очищение параметров форматирования в окне замены — эквивалент нажатию кнопки "Снять форматирование", а фразы "Selection.Find.ParagraphFormat.Alignment = wdAlign ParagraphLeft" и "Selection.Find.Replacement.ParagraphFormat.Alignment = wdAlignParagraphJustify" — установка параметров того, что надо искать — выравнивания "Left" (то есть по левому краю) и того, на что надо заменять — выравнивания "Justify" (по ширине). Нетрудно было догадаться — просто переведя с английского языка значения слов, входящих в команды: "Selection" — выделение, "Find.Replacement" — найти и заменить, "ParagraphFormat" — формат абзаца, "Alignment" — выравнивание, "AlignParagraphJustify" — "РавнятьАбзацПоШирине". Что ж, ясно. Оператор "With" нам уже знаком — в следующим за разобранными нами строчками фрагменте речь пойдет об окне "Найти и заменить".

Легко сообразить, что все параметры объекта "Selection.Find" (то есть поиска в выделенной части текста или во всем тексте) соответствуют параметрам окна "Найти и заменить": ".MatchWholeWord" — "искать целое слово", ".MatchCase" — "учитывать регистр".".Text" — здесь, наверное, надо указать заменяемый текст, а".Replacement.Text" — здесь то, на что заменить. В нашем случае заменять надо не текст, а форматирование, поэтому эти строчки пусты.

Заметив повторения слов "Selection.Find" в первых четырех строчках, можно посчитать, что и их содержимое можно включить в блок оператора "With". Проверим-ка это. Чуть ниже последнего записанного нами макроса напишем строчку: "Sub experiencel()" (имя после "Sub" может быть любым, важно лишь, чтобы оно не совпадало с какой-либо командой VBA). Нажмем Ввод — парой строчек ниже редактор VBA напишет: "End Sub". С помощью команд "Копировать" и "Вставить" скопируем из нашей программы в текст нового макроса блок "With Selection.Find". А затем переместим все строчки, относящиеся к отражению в макросе работы окна "Найти и заменить" в блок "With Selection.Find", убрав слова "Selection.Find":

Sub experiencel()

With Selection.Find

  .ClearFormatting

  .ParagraphFormat.Alignment = wdAlignParagraphLeft

  .Replacement.ClearFormatting

  .Replacement.ParagraphFormat.Alignment = wdAlignParagraphJustify

  .Text = ""

  .Replacement.Text = ""

  .Forward = True.Wrap = wdFindContinue

  .Format = True.MatchCase = False

  .MatchWholeWord = False

  .MatchWildcards = False

  .MatchSoundsLike = False

  .MatchAllWordForms = False

  .Execute Replace:=wdReplaceAll

End With

End Sub

Попробуем программу в деле. Откроем еще один документ из общего набора и запустим клавишей F5 новый макрос на выполнение (курсор должен стоять внутри текста запускаемого макроса). Все прекрасно! Замена произошла так, как необходимо. Значит, ясно — так сокращать текст программы можно.

Осталось еще несколько интересных строчек, конкретное значение которых может вызвать вопросы — ".Forward = True", ".Wrap = wdFindContinue", ".Execute Replace:=wdReplaceAll". Ну, первая — это направление поиска — вперед или назад (тогда бы там было значение "False"). Но что значит вторая? А запишем-ка для выяснения еще макрос с такой же заменой выравнивания влево на выравнивание по ширине, но с разными параметрами направления поиска. Вот что получилось:


Параметры поиска ∙ Записанный фрагмент кода

Вперед, с согласием на продолжение поиска ∙

Перейти на страницу:

Похожие книги