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

Назначить кнопку или сочетание клавиш для вызова формы невозможно. Необходимо вставить команду вызова формы ('ИмяФормы. Show') в текст программы в модуле, и уже затем назначить кнопку или сочетание клавиш для вызова именно этой программы.

Для вызова программы очень удобно использовать кнопки с иконками. Для этого нужно всего лишь перетащить название нужного макроса из окна «Настройка» на какую-нибудь (лучше специально созданную) панель инструментов, а затем выбрать значок для кнопки и задать стиль отображения — лучше всего без текста, 'Основной стиль'.

Можно также оставить на кнопке текст с названием макроса, однако тогда этот текст стоит соответственно отредактировать. Стоит помнить, что при подведении курсора мыши к кнопке, вызывающей макрос, отображается всплывающая подсказка с названием макроса (берется название макроса после команды начала программы Sub), поэтому макросам неплохо давать осмысленные имена. Однако если макрос назван по-русски, то в нелокализованных версиях Word он не будет вызываться кнопкой, созданной в русской версии.

Всплывающие подсказки кнопок можно задать самостоятельно с помощью команды 'CommandBars('Имя панели'). Controls('Номер иконки на панели'). TooltipText = 'Текст подсказки''. К сожалению, через диалоговое окно настройки панелей и кнопок сделать это не удастся, поэтому для ввода этой команды придется использовать отдельный модуль или Окно отладки.

Вам может не понравиться весьма ограниченный выбор значков для кнопок, предлагаемый Word'ом. Этот набор, вызываемый из меню 'Выбрать значок для кнопки' в режиме настройки панелей, действительно, маловат. Но никто не мешает с помощью других команд того же меню скопировать значок с любой другой кнопки на любой другой панели или создать его самому во встроенном редакторе изображений на кнопках. Кроме того, красивые значки можно извлечь из «недр» Office, — а он содержит в себе около двух тысяч разнообразных значков! Для этого достаточно ввести в Окне отладки команду

CommandBars('имя существующей панели инструментов'). Controls.Add(Type:=msoControlButton, ID:=797). FaceId = x

где х — любое число от 1 до 3000. Тогда на указанной в команде панели будет создана кнопка со значком, который можно скопировать на свою кнопку. Не для всех кодов существуют значки, поэтому иногда созданная таким образом кнопка будет пустой, — попробуйте еще раз с другим х.[11]

Если в качестве способа вызова макроса выбрана панель инструментов с кнопками, то после окончания работы над ней стоит повторить создание нового документа и вновь скопировать все компоненты программы в новый документ вместе с панелью. Такое преобразование позволит существенно сократить размер файла с программой, так как вследствие ошибки в Office при редактировании макросов файл с программой сильно увеличивается в размерах — до полутора-двух раз. Впрочем, в OfficeXP данная рекомендация уже неактуальна.

Не стоит забывать и об информативном руководстве для пользователя, особенно если программа будет распространяться через Интернет. Лучше всего такое руководство оформить в отдельном текстовом файле или, если оно имеет большой объем, в виде набора связанных html-документов.

Полезные советы

· Настройки программы можно сохранять в системном реестре 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» (для этого достаточно набрать название объекта и поставить после него точку, — список возможных продолжений отобразится сам). Среди них можно найти немало весьма интересных и полезных, вроде средства задания и получения значений ширины и высоты окна 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

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату