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

Иначе Word будет сохранять документы в той папке, где последний раз был сохранен или открыт како-нибудь документ с помощью диалоговых окон "Сохранить как…" и "Открыть…". А это все же не всегда будет той же самой папкой, где находятся обрабатываемые документы, — к тому же документы для обработки можно открывать в Word и путем перетаскивания иконки файла в окно редактора, а при таком способе открытия папка сохранения документов не меняется.

И, наконец, последняя строчка:

ActiveWindow.Close

End Sub

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

Ну, а теперь надо добиться того, чтобы программа могла обрабатывать не один документ, а сразу множество. Можно пойти двумя путями: либо обрабатывать все нужные документы в одной папке, либо обработать все открытые документы, предварительно открыв нужные. Лично я предпочел второй вариант: ведь тогда можно открыть для обработки все действительно необходимые документы, несмотря на их исходное расположение — пусть даже и не в одной папке.

Как это сделать? Заметим, что готовый документ закрывается после обработки, и в окне Word активизируется следующий документ из всех открытых в редакторе. Следовательно, во-первых, надо обеспечить выполнение макроса над всеми документами, то есть его повторение — после окончания работы макроса он должен быть выполнен сначала… Можно считать, что в момент обработки в окне

Word будут открыты лишь те документы, которые обработать надо — лишние всегда можно закрыть, а если так уж необходимо оставить их открытыми, то ничего не мешает открыть для обработки файлов новое окно Word. Для выполнения макроса сначала нужно заставить VBA перейти в начало программы. Поищем в справке VBA, в Предметном указателе по слову "переход" — есть ли какая команда для этого? Получаем список — "безусловные", "при ошибке", "условные"[5].

Выберем "Безусловные" — ведь в нашей программе надо обязательно перейти к обработке следующего документа. Получаем выбор из двух функций — выберем вторую, название короче — наверняка ее использование проще.

Из справки и примера узнаем, что инструкция (то есть функция, которая не возвращает никаких значений) "Goto" указывает на необходимость перехода к строке, на которой находится установленная нами метка. Поставим метку[6] в начало нашей программы:

Sub Макрос1

' Макрос1 Макрос

metka:

Selection.Wholestory

With Selection.Font

.Name = "Times New Roman"

а в ее конец — инструкцию "Goto":

ActiveDocument.SaveAs FileName:=ActiveDocument.Path + "\" +

Left(ActiveDocument.Name, Len(ActiveDocument.Name) — 4),

FileFormat:=wdFormatRTF

ActiveWindow.Close

Goto metka

End Sub

Готово. Теперь наша программа обработает все открытые документы. Но… обработать-то обработала, но в конце выдала сообщение об ошибке. Можно, конечно, оставить и так, но программа, заканчивающая свою работу ошибкой, пусть и после выполнения всех необходимых действий, выглядит некрасиво. Поэтому нужно обеспечить остановку выполнения программы после того, как будут обработаны все документы. Итак, алгоритм действий программы должен быть таков:

1. Выполнить обработку активного документа, сохранить его и закрыть.

2. Посмотреть, есть ли еще открытые документы.

3. Если есть, то перейти к пункту 1, если нет, то завершить работу.

"Если" — по-английски "If". Поищем по этому слову в Предметном указателе справки. Получаем строчку: "Инструкция If", выбрав которую, получаем окно из различных сочетаний слов If, Then, Else и др[7].

Выберем "Инструкция If…Then…Else" — вроде первое слово понятнее. Получаем справку, из которой узнаем синтаксис команды:

If условие Then [инструкции] [Else инструкции_еlsе]

Какое же условие должно быть у нас? Наверное, подсчет количества открытых документов — если не 0, то продолжать работу, а если 0, то остановиться. А как можно подсчитать количество открытых документов? Посмотрим, нет ли в VBA команды для такого подсчета? Напишем в тексте программы: "Documents", поставим точку и просмотрим выпавший список. Так и есть — в списке имеется метод "Count": скорее всего, это функция подсчета. Выберем ее из списка и посмотрим по ней справку и пример — да, эта команда считает открытые документы. То есть условие должно выглядеть как "If Documents. Count > 0 Then…". Ну, а инструкции — переход к метке — нами уже написаны.

Часть команды "Else…" можно опустить, а просто написать нужные инструкции после команды "If…" — ведь все равно к их выполнению программа не перейдет до тех пор, пока останутся открытые документы. А поместить там, наверное, стоит вызов сообщения, желательно со звуковым сигналом, — чтобы можно было поставить документы на обработку и отойти. Используем функцию MsgBox (о ее синтаксисе подробно написано в справке):

signal = MsgBox("Обработка закончена", vbInformation, "Обработка текстов")

Итак, программа готова. Можно с помощью диалогового окна "Настройка" назначить ей кнопку, пункт меню или сочетание клавиш, и запускать ее при необходимости.

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

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

Гостиная
Гостиная

Эта книга предназначена для тех, кто хотел бы собственными руками обустроить свою гостиную, сделав ее уютной и удобной. Здесь вы найдете исчерпывающие советы по созданию гармоничного интерьера, удобному освещению, размещению ковров, цветов и картин, а также других мелочей, которые превратят вашу гостиную в комфортабельную комнату, удовлетворяющую потребностям каждого члена семьи.В этой книге также даны подробные рекомендации по ремонту гостиной, которые помогут осуществить задуманное вами преобразование. Методы, описанные здесь, вполне доступны каждому. Надеемся, что эта книга поможет вам подойти к обустройству гостиной творчески, а ремонтные работы доставят истинное удовольствие.

Линиза Жалпанова , Линиза Жувановна Жалпанова , Наталья Михайловна Сухинина , Наталья Сухинина

Сделай сам / Дом и досуг
Справочник настоящего мужчины
Справочник настоящего мужчины

В книге собраны и обобщены практические рекомендации и инструкции, которые помогут мужчине оставаться настоящим «Джеймсом Бондом» как в экстремальных условиях, так и в повседневной жизни. Рассмотрено: как организовать слежку и наблюдение, уходить от погони, как общаться с сотрудниками правоохранительных органов, как обезопасить себя на улицах и в подворотнях мегаполиса, какие охранные системы применять для квартиры и офиса, как выжить на природе, как добывать пищу с помощью подручных средств и многое другое. Рассказано, как звонить с мобильного телефона при разряженном аккумуляторе, не бояться собак, готовить напитки и коктейли и др. Все рекомендации разбиты по темам.

Андрей Петрович Кашкаров

Сделай сам / Хобби и ремесла / Прочая справочная литература / Дом и досуг / Словари и Энциклопедии