litbaza книги онлайнРазная литератураИнтернет-журнал "Домашняя лаборатория", 2007 №7 - Глуховский

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 285 286 287 288 289 290 291 292 293 ... 511
Перейти на страницу:

Рис. 7.25. Подписывание файла Word.

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

ПОЛЕЗНЫЕ СОВЕТЫ

В этой главе вы найдете набор советов по программированию на VBA, которые могут помочь вам в решении тех или иных задач. Кроме того, в конце главы есть несколько заметок на различные темы, связанные с программированием на Visual Basic for Applications.

* * *

Настройки программы можно сохранять в системном реестре Windows. Для этого служит команда "SaveSetting", с помощью которой можно поместить в системный реестр строку или число. Она имеет формат "SaveSetting "Имя приложения","Имя раздела", "Ключ", "Значение"". Имя приложения, имя раздела и ключ — указатели места, в котором сохраняется значение. Получить значения из реестра можно командой "GetSetting" с синтаксисом "GetSetting "Имя приложения","Имя раздела", "Ключ", "То значение, которое следует вернуть, если такого ключа, как указанный в предыдущем параметре, в реестре нет"", а удалить — командой "DeleteSetting "Имя приложения","Имя раздела", "Ключ"". Например:

SaveSetting "Макросы", "Макрос1", "Имя папки", "C: MyPapka"

papka = GetSetting "Макросы", "Макрос1", "Имя папки", "C: Docs"

* * *

Записать список всех установленных в системе шрифтов в массив можно таким способом:

ReDim shrifti(FontNames.Count) As String

For r = 1 To FontNames.Count shrifti(r) = FontNames(r)

Next r

WordBasic.SortArray shrifti()

(В массив "shrifti()" размером в количество шрифтов в системе помещается список имен всех установленных в системе шрифтов. Команда "WordBasic.SortArray" сортирует его по алфавиту.)

* * *

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

* * *

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

* * *

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

Рис. 8.1. Свойства и методы объекта System — склад весьма интересных вещей….

Вот некоторые полезные свойства объекта Application.

Application.CapsLock — показывает, горит ли на клавиатуре индикатор CapsLock.

Application.NumLock — показывает, горит ли на клавиатуре индикатор NumLock.

Application.Caption — сообщает заголовок окон запущенной программы (для Word, например, это — "Microsoft Word"). Этот заголовок можно поменять: так, команда "Application.Caption = "Мой Word"" заменит традиционный заголовок окна Word'а на тот текст, что указан в скобках.

Application.DisplaystatusBar — сообщает, отображается ли статусная строка. С помощью этого свойства можно и убрать ее, и снова восстановить — командами Application.DisplayStatusBar=False и Application.DisplaystatusBar=True соответственно.

Application.EnableCancelKey — в случае установки в True запущенный макрос нельзя будет прервать нажатием Ctrl+Break.

Application.Height и Application.Widht — возвращают соответственно высоту и ширину окна приложения. С помощью этих свойств можно и задать размеры окна приложения, скажем, расширить окно Word до нужной ширины.

Application.РаthSeparator — возвращает символ, служащий разделителем имен папок в полном пути к файлу. В MS-DOS и Windows это "", а в операционных системах, применяемых на компьютерах Macintosh — ":". Использование данного свойства может пригодиться при разработке мультиплатформенных программ — работающих как в Microsoft Office for Windows, так и в Microsoft Office for Macintosh.

Application.Version — сообщает версию приложения. Например, такая команда, будучи вызванной в Microsoft Word 97, вернет "8.0" или "8.0а", в Microsoft Word 2000 — "9.0", в Microsoft Word ХР — "10.0".

А вот некоторые интересные методы этого объекта:

a=Application.CleanString (строковая переменная) — очищает строку, находящуюся в строковой переменной, от неотображаемых специальных символов;

Application.OnTime — позволяет запустить тот или иной макрос в назначенное время или спустя некоторый срок после выполнения данной команды. О параметрах использования рассказано в Справочной системе VBA, там же приведены и примеры.

* * *

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

Set MyData = New DataObject

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

MyData.PutlnClipboard

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

* * *

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

Рис. 8.2. Пути и папки. Справка.

* * *

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

* * *

Если вы пишете инсталлятор для ваших программ, который помещает шаблоны с макросами в папку автозагружаемых файлов Word, то совсем необязательно требовать перезагрузки редактора, чтобы макросы из помещенного в эту папку шаблона стали доступны. 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[238]

Иными словами, программа пытается подключить шаблон

1 ... 285 286 287 288 289 290 291 292 293 ... 511
Перейти на страницу:

Комментарии
Минимальная длина комментария - 20 знаков. Уважайте себя и других!
Комментариев еще нет. Хотите быть первым?