VBA для тех кто любит думать


VBA и Office XP - часть 91


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

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

 

05_18.bmp

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

 

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

Итак, при запуске нашей программы происходит перезапись обрабатываемого файла в формате Rtf, но с прежними именем и расширением. Интересно, а что будет, если запустить эту программу при активном ни разу не сохранявшемся документе? Ведь тогда программе будет неоткуда брать имя и расширение, - что она сделает? Запускаем…




Начало  Назад  Вперед