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

В обоих случаях нам выдается список ссылок на разделы Справочной системы. Перебрав их все (через окно Справочной системы это делать удобнее, чем с помощью Помощника), определяем, что нужная нам информация содержится в рассказе о функции 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

End Sub

и запустим его. В окне сообщения — имя документа без расширения (рис. 5.30).



Рис. 5.30.Результат работы команды "MsgBox Left(ActiveDocument.Name, Len(ActiveDocument.Name) — 4)".


Все так, как нам необходимо.

* * *

НЕБОЛЬШОЕ ОТСТУПЛЕНИЕ.

Вышеизложенный способ получения имени активного документа без расширения — не самый лучший, хотя имеет право на существование. Есть еще один способ узнать только имя документа, унаследованный из предыдущих версий Word, — в макроязыке для Microsoft Word 6.0 и Microsoft Word 95 была специальная команда для получения имени документа, к сожалению, не включенная в Visual Basic for Applications. Однако она может быть использована в Visual Basic for Applications, так как все макросы для Microsoft Word 6.0 и Microsoft Word 95 могут выполняться и в более старших версиях Microsoft Office. При открытии в Microsoft Office 97/2000/ХР шаблонов с макросами, созданных в предыдущих версиях Office, все макросы автоматически конвертируются для выполнения в Visual Basic for Applications с помощью включенной в него версии языка WordBasic, на котором писались макрокоманды для для Microsoft Word 6.0 и Microsoft Word 95.

В для Microsoft Word 6.0 и Microsoft Word 95 была функция "FileNameInfo$(документ, параметр)", с помощью которой можно было получить имя документа без расширения, путь к документу без имени и путь к документу вместе с именем. Для того, чтобы узнать одно имя документа, без расширения и пути, значение параметра должно быть равно 4. (Все это подробно описано в справке по WordBasic для Microsoft Word 6.0 и Microsoft Word 95.) В Visual Basic for Applications эта функция выглядит так:

imyadoc = WordBasic.[FileNameInfo$](ActiveDocument.Name, 4)

Она возвращает полное имя документа без расширения и пути. Данная функция будет просто незаменима при обработке документов с расширениями, состоящими не из трех символов — например, ".html". В то время как в таких случаях с помощью функций "Len", "Mid", "Right" пришлось бы писать большие фрагменты кода для получения имени документа без расширения, эта функция позволит получить его одной строчкой.

Однако при первой работе с Visual Basic for Applications она не будет очевидной, так как узнать о ней, и тем более об ее необходимых параметрах может только тот, кто раньше имел дело с WordBasic. Поэтому в нашей программе будет использоваться предыдущая функция — "imyadoc =

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

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

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