Читаем Тайны и секреты компьютера полностью

Видно, что наличие или отсутствие согласия на продолжение поиска не влияет на записываемый текст. А как же тогда отказаться от запроса на продолжение? Откроем текст макроса и поставим после команды".Wrap" еще один знак "=" (рис. 3.7).

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

Осталось разобраться со строчкой".Execute Replace:= wdReplaceAll". По логике вещей, это должна быть команда запуска поиска, тем более что и слово «Execute» означает «Запустить». Посмотрим в справке — по слову «Execute». Так, четыре ссылки: "For information about the Execute method, click one of the following object names: Dialog, Find, KeyBinding, MailMerge". Нас интересует вторая — «Find», так как мы работаем именно с этим обьектом. Открываем…

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

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

ActiveDocument.Save

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

ActiveDocument.SaveAs FileName:="Доклад1.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:="Доклад1.rtf"" и "FileFormat:=wdFormatRTF" — имя файла, под которым сохраняется активный документ, и тип сохраняемого файла. Тип нас устраивает — формат Rtf. А вот как быть с именем? Ведь у каждого файла должно быть свое, уникальное имя. Попробуем для начала просто исключить строчку с указанием имени из текста данной команды. Создадим еще один модуль, скопируем туда всю команду "ActiveDocument.SaveAs" со всеми параметрами и удалим строчку "FileName:="Доклад1.rtf"". Запустим программу… ничего не произошло. Но ведь программа что-то делала: и жесткий диск работал, и система была недоступна пару секунд, и сообщений об ошибках не было… Что же все же сработало? А откроем-ка в «Блокноте» или другом редакторе простого текста файл, который сохранялся — у меня это был файл "Доклад2.doc", предварительно выгрузив его из Word (рис. 3.8).

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

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

Интересно, а что будет, если запустить эту программу при активном ни разу не сохранявшемся документе? Запускаем… Активный документ приобрел имя "Doc1.doc" (ну, или "Doc2.doc", "Doc3.doc" — у кого как). Но где он сохранился? Ищем по F3 в Explorere — так, сохранен он в папке, где произошло последнее ручное сохранение какого-либо файла или в папке для документов Word по умолчанию.[3]

Следовательно, при программном сохранении ранее несохранявшегося документа без задания ему имени и места сохранения (место сохранения можно задать, включив в имя документа в пункте «FileName» полный путь к его новому местоположению) происходит сохранение активного документа в папке по умолчанию (или в папке, где был последний раз сохранен вручную какой-нибудь документ) и с именем по умолчанию. Примем к сведению.

Но как же нам быть с нашей программой? Нам ведь надо, чтобы все обрабатываемые файлы сохранялись под своим именем и в формате и с расширением Rtf! А попробуем-ка каким-нибудь способом получить программно имя активного документа. Создадим еще один макрос, и напишем там «ActiveDocument», ставим точку (рис. 3.9) и видим, что среди возможных продолжений команды есть свойство "Name".

Рис. 3.9. А так можно найти нужное продолжение команды.

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

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