• Если вы решили хранить какую-нибудь информацию, нужную при работе программы, в отдельном файле, не стоит экспериментировать с командами чтения и открытия файла типа "open", "write" и др. Просто открывайте файл в Word как текстовый с помощью команды "Documents. Open…" и пишите в него обычными средствами записи текста: "Selection.Text = "Мой текст"".
• Посмотрите повнимательнее свойства, объекты и методы таких объектов, как "Application" и "System" (для этого достаточно набрать название объекта и поставить после него точку, — список возможных продолжений отобразится сам). Среди них можно найти немало весьма интересных и полезных, вроде средства задания и получения значений ширины и высоты окна Word, информации о языке данной версии Office, метод чтения данных из произвольного места реестра и многое другое.
• С помощью фрагмента кода
Set MyData = New DataObject
MyData.SetText "Мой текст"
MyData.PutlnClipboard
можно поместить текст в буфер обмена, не используя активный документ.
• С помощью команды "Options.DefaultFilePath("константа названия папки")" можно получить пути и имена папок, перечисленных в диалоговом окне Word "Сервис" — "Параметры" — "Расположение". Все константы перечислены в справке VBA по слову "DefaultFilePath", а об их значении можно легко догадаться, переведя название константы с английского.
• Если у одного из элементов формы установить свойство Cancel в True, то нажатие кнопки Esc будет эквивалентно клику мыши на этом элементе.
• Если вы пишете инсталлятор для ваших программ, который помещает шаблоны с макросами в папку автозагружаемых файлов Word[12]
, то совсем необязательно требовать перезагрузки редактора, чтобы макросы из помещенного в эту папку шаблона стали доступны. VBA позволяет активизировать такие шаблоны без перезагрузки Microsoft Word — для этого существует специальная командаAddins.Add("полное имя шаблона, включая путь к нему и расширение").Installed = True
Эта команда эквивалентна ручному подключению шаблона с макросами через меню Word "Сервис — Шаблоны и надстройки". Однако если она будет выполнена сразу же после программного копирования шаблона в папку автозагружаемых файлов, то может возникнуть ошибка вследствие того, что при таком копировании Word должен зарегистрировать этот шаблон как доступный для подключения (после регистрации он появится в диалоговом окне "Сервис-Шаблоны и надстройки", но не будет отмечен как загруженный). На это уходит пара секунд, и если в этот момент вызвать команду подключения шаблона, то Word может ответить программе, что такого шаблона в папке автозагрузки нет, что вызовет ошибку.
Предотвратить подобную ситуацию можно, например, с помощью следующей конструкции, — разместите ее после команды копирования шаблона "FileCopy":
а="Имя шаблона в папке автозагрузки с полным указанием пути"
On Error Resume Next
Do
If Addins(a).Installed Then Exit Do
Addins(a).Installed = True
Loop[13]
При использовании команды подключения шаблона он может находиться и не в папке автозагружаемых файлов, но все же надежнее использовать именно папку автозагрузки.
• Для удаления шаблона без выгрузки Word можно использовать такой же код:
а="Имя шаблона в папке автозагрузки с указанием пути"
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 метка", и тогда при ошибке в коде после него произойдет переход к указанной в обработчике метке и выполнение программы продолжится именно с нее.
• Если вы, работая в Word 97, часто сохраняете документы в формате HTML, и вам мешает постоянно появляющийся диалог о выборе кодировки файла (рис. 5.2), то отключите его, установив в системном реестре строковый
Рис. 5.2.
параметр "HKEY_LOCAL_ MACHINE\Software\Microsoft\Shared Tools\Text Converter s \Expor t\HTML\Options\Show EncodingDialog" как "No". Установить этот параметр реестра можно и программно с помощью команды
"System.PrivateProfileString("", "HKEY_LOCAL_MACHINE\Software\Microsoft\Shared Tools\Text Converters\Export\HTML\Options", "ShowEncodingDialog") = "No""