заложенную Вами в макрос комбинацию клавиш, то Ваша программа начнет работать некорректно.

· Помимо привычных кнопок и выпадающих меню в Word существует еще несколько типов элементов вызова команд и программ — поля ввода и выпадающие меню выбора. К примеру, элемент 'Выпадающее меню с полем ввода' используется для указания масштаба просмотра документа на панели «Стандартная» или для ввода вопроса к справочной системе в OfficeXP.

Создать такое поле можно только программно — через окно настройки это сделать нельзя (как, впрочем, и удалить их впоследствии). Для этого следует в окне отладки или в отдельном модуле выполнить команду

CommandBars(x). Controls.Add Type:=y

где «х» — номер панели (можно узнать, просто перебрав их все с помощью команды 'MsgBox CommandBars(номер). Name' и выяснив, какой номер имеет панель инструментов с нужным названием), а «y» — одна из констант: 'msoControlEdit', 'msoControlDropdown', 'msoControlComboBox', создающие соответственно поле ввода текста, выпадающее меню и выпадающее меню с возможностью ввода текста.

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

CommandBars(x). Controls(y). Text = 'текст в поле ввода'

где «х» — номер панели, «y» — номер по счету слева направо данного поля среди кнопок этой панели. Таким образом можно использовать эти элементы для отображения нужной пользователю информации. Точно так же — командой 'a=CommandBars(x). Controls(y). Text' можно считать информацию из данного поля и использовать ее в работе программы. Следует лишь внимательно следить за соответствием номеров кнопок их реальному расположению, — при изменении порядка кнопок программа может работать неверно. Назначить макрос кнопке, меню или полю ввода можно командой 'CommandBars(x). Controls(y). OnAction = 'Имя модуля. Имя программы''.

· Для работы из одного приложения Office с другим можно использовать технологию ActiveX. Она основана на имеющейся в Office возможности представлять одну программу в другой как некий объект, с которым можно работать теми же командами, что используются при непосредственной работе с этой программой. Так, чтобы можно было из Word'овского макроса работать с Excel'ем, следует создать объект 'Excel.Sheet':

·

Dim es As Object

Set es = CreateObject('Excel.Sheet')

Здесь «es» — простое наименование переменной, может быть любым.

(Если надо сразу открыть какой-либо файл Excel'а, то можно использовать команду 'GetObject':

Set es= GetObject('Путь к файлу Excel'а'))

При желании можно сделать созданный объект Excel видимым:

es.Application.Visible = True

Теперь можно этому объекту es (т. е. просто запущенному Excel'у) посылать команды такие же, как и в макросах Excel'а (предваряя текстом 'es.Application.' те из команд, которые не требуют прямого указания объекта, — так как надо дать понять программе, что работа идет именно с Excel'ем). Так, чтобы открыть файл Excel'а, можно также дать команду

es.Application.Workbooks.Open FileName:='Путь к документу Excel'а'

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

es.Cells(1, 1). Value = 'Это столбец A, строка 1'

Закрыть Excel можно командой

es.Application.Quit

Set es = Nothing

Можно даже вызвать на исполнение макрос, содержащийся в книге Excel. Для этого следует использовать команду

es.Application.Run 'имя макроса'

Так что есть простор для творчества.

ProgressBar в ваших программах

Во многих программах для Windows используется такой элемент, как ProgressBar — индикатор, показывающий, на сколько продвинулся тот или иной процесс. В частности, он есть практически во всех программах-инсталляторах. К сожалению, в VBA этот элемент отсутствует, но его можно сделать самостоятельно!

Выглядеть он будет, например, так, как на рис. 5.3.

А делается он следующим образом (предполагается, что у нас есть часть программы, в которой выполняется длинный и долгий цикл: то есть известное нам количество множество однотипных операций, и которую надо снабдить ProgressBar'ом):

1. Создаем небольшую форму и помещаем на нее: надпись с пояснительным текстом (например, 'Label1') и две другие надписи, (скажем, «Label2» и 'Label3'), низкие и широкие, которые расположим одну над другой (рис. 5.4).

К примеру, их координаты и размеры:

Label2: Top — 45, Left — 15, Height — 15, Width — 250

Label3: Top — 45, Left — 15, Height — 15, Width — 0

Зададим в качестве фонового цвета для «Label2» — серый, а для «Label3» — зеленый (свойство «BackColor», вкладка 'Палитра').

Рис. 5.3. ProgressBar в программе на VBA

Рис. 5.4. А вот как он сделан

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

0

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

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