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

· Условие "If Selection.Type = wdSelectionIP Then …" выполнится, только если в документе не выделен фрагмент текста.

· Если вы решили хранить какую-нибудь информацию, нужную при работе программы, в отдельном файле, не стоит экспериментировать с командами чтения и открытия файла типа «open», «write» и др. Просто открывайте файл в Word как текстовый с помощью команды "Documents.Open …" и пишите в него обычными средствами записи текста: "Selection.Text = "Мой текст"".

· Посмотрите повнимательнее свойства, объекты и методы таких объектов, как «Application» и «System» (для этого достаточно набрать название объекта и поставить после него точку, — список возможных продолжений отобразится сам). Среди них можно найти немало весьма интересных и полезных, вроде средства задания и получения значений ширины и высоты окна Word, информации о языке данной версии Office, метод чтения данных из произвольного места реестра и многое другое.

· С помощью фрагмента кода

Set MyData = New DataObject

MyData.SetText "Мой текст"

MyData.PutInClipboard

можно поместить текст в буфер обмена, не используя активный документ.

· С помощью команды "Options.DefaultFilePath("константа названия папки")" можно получить пути и имена папок, перечисленных в диалоговом окне Word «Сервис» — «Параметры» — «Расположение». Все константы перечислены в справке VBA по слову «DefaultFilePath», а об их значении можно легко догадаться, переведя название константы с английского.

· Если у одного из элементов формы установить свойство Cancel в True, то нажатие кнопки Esc будет эквивалентно клику мыши на этом элементе.

· Если вы пишете инсталлятор для ваших программ, который помещает шаблоны с макросами в папку автозагружаемых файлов Word,[12] то совсем необязательно требовать перезагрузки редактора, чтобы макросы из помещенного в эту папку шаблона стали доступны. VBA позволяет активизировать такие шаблоны без перезагрузки Microsoft Word — для этого существует специальная команда

AddIns.Add("полное имя шаблона, включая путь к нему и расширение"). Installed = True

Эта команда эквивалентна ручному подключению шаблона с макросами через меню Word "Сервис — Шаблоны и надстройки". Однако если она будет выполнена сразу же после программного копирования шаблона в папку автозагружаемых файлов, то может возникнуть ошибка вследствие того, что при таком копировании Word должен зарегистрировать этот шаблон как доступный для подключения (после регистрации он появится в диалоговом окне "Сервис-Шаблоны и надстройки", но не будет отмечен как загруженный). На это уходит пара секунд, и если в этот момент вызвать команду подключения шаблона, то Word может ответить программе, что такого шаблона в папке автозагрузки нет, что вызовет ошибку.

Предотвратить подобную ситуацию можно, например, с помощью следующей конструкции, — разместите ее после команды копирования шаблона "FileCopy":

a="Имя шаблона в папке автозагрузки с полным указанием пути"

On Error Resume Next

Do

If AddIns(a). Installed Then Exit Do

AddIns(a). Installed = True

Loop[13]

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

· Для удаления шаблона без выгрузки Word можно использовать такой же код:

a="Имя шаблона в папке автозагрузки с указанием пути"

On Error Resume Next

Do

If Not AddIns(a). Installed Then Exit Do

AddIns(a). Installed = False

Loop

AddIns (a). Delete

Kill (a)

· Команда "Kill" выполняет удаление файла.

Команда "On Error Resume Next", встречающаяся в обоих вышеприведенных фрагментах кода — это обработчик ошибок. В случае возникновения ошибки в коде после него (скажем, связанной с обращением к несуществующему объекту) он продолжит выполнение программы с команды, следующей за вызвавшей ошибку. Обработчик ошибок может также иметь вид "On Error GoTo метка", и тогда при ошибке в коде после него произойдет переход к указанной в обработчике метке и выполнение программы продолжится именно с нее.

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

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