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

Ну вот, все и ясно — так как значения".wdFindAsk" и".wdFindContinue" мы уже перебирали, то для отказа от продолжения замены после достижения конца документа нужно поставить значение параметра".Wrap" как "wdFindStop". То есть вышеприведенная таблица должна иметь вид

Параметры поиска • Необходимый фрагмент кода

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

Forward = True

Wrap = wdFindAsk

Назад, с согласием на продолжение поиска

Forward = False

Wrap = wdFindAsk

Вперед, без согласия на продолжение поиска

Forward = True

Wrap = wdFindStop

Назад, без согласия на продолжение поиска

Forward = False

Wrap = wdFindStop

Везде

Forward = True

Wrap = wdFindContinue

Осталось разобраться со строчкой".Execute Replace:=wdReplaceAll". По логике вещей, это должна быть команда запуска поиска, тем более что и слово "Execute" означает "Запустить". Посмотрим в справке — по слову "Execute" (рис. 5.16).



Рис. 5.16. Справка по слову Execute.


Так, получаем четыре ссылки: "For information about the Execute method, click one of the following object names: Dialog, Find, KeyBinding, MailMerge". В Microsoft Office 2000/XP это окно Справочной системы VBA несколько красивее, но перечень объектов, к котором может быть применен метод Execute, в нем такой же, разве что отдельно приводятся ссылки на примеры кода. Нас интересует вторая ссылка — "Find", так как мы работаем именно с этим объектом. Открываем (рис. 5.17)…



Рис. 5.17. Справка по команде Execute объекта Find


Так и есть — команда".Execute" запускает команду поиска и замены на выполнение: "Runs the specified find operation. Returns True if the find operation is successful.". Из текста справки также узнаем, что все параметры поиска и замены можно было бы задать и в скобках, а, кроме того, результат выполнения команды можно записать в переменную — успешен ли был поиск или нет (то есть были ли найдены в данном сеансе работы команды "Найти и заменить" искомые элементы), принимающую значения соответственно "True" или "False". Сейчас данная возможность не требуется, однако запомнить ее стоит — мало ли когда пригодится.

Продолжаем изучать записанную макрокоманду.

ActiveDocument.Save

Вопросов не вызывает — это команда сохранения активного документа.

ActiveDocument.SaveAs FileName:="Доклад!.rtf", FileFormat:=wdFormatRTF, LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= False

А вот здесь уже понадобится редактирование. Это команда "Сохранить Как…" — поскольку соответствующая команда Word представляет собой диалоговое окно, то в текст макроса помещаются все возможные параметры, как соответствующие установленным по умолчанию, так и нет: ''''AddToRecentFiles" — добавлять ли ярлык в папку "Recent", ''''EmbedTrueTypeFonts" — внедрять ли шрифты TrueType.

Наиболее интересны элементы команды "FileName:=”Доклад!.rtf"" и "FileFormat:=wdFormatRTF" — имя файла, под которым сохраняется активный документ, и тип сохраняемого файла. Тип нас устраивает — формат Rtf. А вот как быть с именем? Ведь у каждого файла должно быть свое, уникальное имя. А тут получается, что все файлы, обрабатываемые данным макросом, станут сохраняться под одним и тем же именем, что, ясное дело, вызовет их запись друг на друга и тем самым потерю данных во всех них, кроме обработанного последним. Что же делать?

Попробуем для начала просто исключить строчку с указанием имени из текста данной команды. Создадим еще один модуль, скопируем туда всю команду "ActiveDocument.SaveAs" со всеми параметрами и удалим строчку "FileName: = ”Доклад!. rtf"". Запустим программу… ничего не произошло. Но ведь программа что-то делала: и жесткий диск работал, и система была недоступна пару секунд, и сообщений об ошибках не было… Что же все же сработало? А откроем-ка в "Блокноте" или другом редакторе простого текста исходный файл, который обрабатывался и сохранялся после обработки — у меня это был файл "Доклад2.doc" (рис. 5.18), предварительно выгрузив его из Word — чтобы "Блокнот" мог его открыть.



Рис. 5.18.Откроем в "Блокноте" файл, который сохранялся нашей командой.


Так вот в чем дело — файл был сохранен в формате Rtf, но под прежним именем и с расширением".doc"! И исходный файл теперь потерян — на его место записан новый. Нас это совершенно не устраивает — ладно, имя пусть будет то же, а вот расширение должно быть именно".rtf". Тогда и перезаписи исходного файла не произойдет — расширение-то будет другим.

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

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