Чтение онлайн

ЖАНРЫ

Интернет-журнал "Домашняя лаборатория", 2007 №7
Шрифт:

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

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

Похоже, это и есть

то, что нам надо. Проверим. Модифицируем экспериментальную процедуру следующим образом:

Sub ехрегience2

MsgBox ActiveDocument. Name

End Sub

Это позволит нам вызвать окно сообщения с значением функции "ActiveDocument.Name". Можно было бы написать "Debug.Print ActiveDocument.Name", что отобразило бы значение этой функции в специальном Окне отладки (вызывается из меню редактора Visual Basic for Applications "Вид"-"Окно отладки"). Но использовать окно сообщения как-то привычнее. Итак, нажимаем F5… получаем окно с сообщением: "Доклад!.doc".

Рис. 5.21. Результат работы команды "MsgBox ActiveDocument.Name".

Но нам ведь нужно одно только имя, без расширения! Как же его получить? Наверное, проще всего убрать последние четыре символа — ".doc". Но как?

Воспользуемся справкой.

Дальнейшие наши действия и их результат весьма серьезно отличаются в зависимости от той версии Microsoft Office, с которой мы работаем.

1. При работе в Microsoft Office 97 нажмем F1 в Редакторе VBA, в открывшемся окне нажмем кнопку "Разделы" (рис. 5.22), а там — "Предметный указатель" (рис. 5.23 — в нем все разделы справки классифицированы по смыслу, в то время как в разделе "Поиск" просто составлена база данных по всем словам, входящим в справочную систему Visual Basic for Applications).

Рис. 5.22. Именно эту кнопку надо нажать, чтобы в Microsoft Office 97 вывести на экран основное справочное меню.

Рис. 5.23. Предметный указатель

Наберем в строке поиска слово "строка". Из списка разделов справочной системы Visual Basic for Applications выберем то, что нам надо — строчку "крайние левые символы" (ведь нам нужно получить из имени документа с расширением только его имя, то есть левую часть строки без четырех правых символов, то есть крайние слева символы). Получаем справку по функции "Left" (рис. 5.24).

Рис. 5.24. Справка по функции Left в Microsoft Office 97.

Превосходно — функция "Left" является именно той функцией, которая нам требовалась. Но она требует значение количества символов во всей строке — как это узнать? Да так, как описано в данном справочном окне — через функцию "Len". Нажмем ссылку "См. также" и выберем из списка строчку "Функция Len" (рис. 5.25).

Рис. 5.25. Справка по функции Len

в Microsoft Office 97.

2. Ну, а если мы используем Microsoft Office 2000 или Microsoft Office ХР, то просто задаем вопрос Помощнику (рис. 5.26) или открываем Справочную систему VBA (рис. 5.27) из меню "Help" Редактора VBA, если Помощник скрыт или не установлен. Вопрос, естественно, формулируется по-английски и может звучать, например, так: "Delete right symbols in string" — "Удалить правые символы из строки".

Рис. 5.26. Вопрос Помощнику…

Рис. 5.27… или Справочной системе.

В обоих случаях нам выдается список ссылок на разделы Справочной системы. Перебрав их все (через окно Справочной системы это делать удобнее, чем с помощью Помощника), определяем, что нужная нам информация содержится в рассказе о функции Left (см. рис. 5.27). В нижней части окна справки по функции Left есть строчка — "То determine the number of characters in string, use the Len function", то есть для определения числа символов в строке (а это нужно, чтобы подсчитать, сколько символов нужно брать слева из исходного имени файла: оно будет равно числу символов в строке минус четыре — длина расширения в три символа и точка) следует использовать функцию Len.

Раз так сказано в Справке по функции Left, то, наверное, рассказ о функции Len и ее синтаксисе находится где-то "рядом". И действительно — открыв ссылку See Also в верхней части окна Справки по функции Left, смотрим на список связанных тем (рис. 5.28)…

Рис. 5.28. Связанные темы.

…и видим, что Справка по функции Len там присутствует. Открываем ее (рис. 5.29)…

Рис. 5.29. Справка по функции Len в Microsoft Office XP

Цель вышеприведенных абзацев, посвященных Справочной системе — не столько проиллюстрировать процесс поиска информации для разработки нашей программы конвертации документов, сколько показать вам основные приемы работы со Справкой VBA, которые вы должны весьма хорошо знать при создании программ на Visual Basic for Applications. В разных версиях Microsoft Office они немного отличаются, однако общие алгоритмы одинаковы — поиск по ключевым словам, переход по ссылкам на связанные рассказы Справки для поиска в них нужной информации.

Найдя нужную нам информацию в Справочной системе (любой версии Microsoft Office — как описано выше), немного подумав и использовав данные о синтаксисе обеих команд в справке, можно написать команду, которая возвращает строку без последних четырех символов:

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

Можно проверить. Создадим еще один модуль:

Sub experience3

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

MsgBox imyadoc

Поделиться с друзьями: