VBA для чайников - Стив Каммингс
Шрифт:
Интервал:
Закладка:
Персонал(2) = usrРаботник
Самое интересное, что этот трюк срабатывает также в случае чтения информации из файла и записи информации в файл на диске. Например, можно сохранить полную записей базу данных на диске с помощью программного кода следующего вида:
Sub WriteData()
Open "С:DatabaseСотрудники.dat" For Binary As #1
For i = 1 To intРазмерБазыДанных ' цикл по всем записям
Put #1, , Персонал(i)
Next i
Close #1 ' закрытие файла - обязательный шаг
End Sub
Чтение данных из файлов и запись данных в файлы на диске обсуждаются в главе 18.
Часть IV Профессиональная работа c VBA
В этой части...
B главах с 14 по 16 рассматривается использование VBA в Microsoft Office. В главе 14 вы познакомитесь с инструментами программирования, которые работают во всех приложениях Office, Сюда относятся приемы для настройки пользовательского интерфейса программирования Помощника по Office, который чаще всего появляется в лице Скрепыша, а также сохранения данных программы в должном формате.
В главах 15 и 16 мы детально остановится на программировании для Word u.Excel соответственно наиболее широко используемых VBA-приложений. В каждой из глав подробно рассматриваются важные средства и приемы программирования для работы с документами и их содержимым с помощью VBA.
Материал остальных глав настоящей части представляет , интерес для всех VBA -программистов, независимо от того, в каком приложении они работают.
В главе 17 мы поговорим о программировании для баз данных на VBA. В главе 18 мы рассмотрим не очень удобные, но более мощные не объектно-ориентированные способы работы с файлами, чем объектно-ориентированные способы, которые рассматриваются нами в главе 20, И наконец, в главе 19 я предлагаю вам расширенно рассмотреть VBA-формы.
Глава 14. VBA для Office.
В этой главе ...
~ Отображение пользовательских панелей инструментов и кнопок с помощью VBA
~ Программирование Помощника по Office
~ Сохранение значений переменных на диске
VBA полезен для создания полноценных приложений не меньше, чем небольших подручных средств. В настоящей главе я познакомлю вас с некоторыми приемами, которые позволят вам профессионально работать с приложениями Office.
Контроль над панелями инструментов и меню
Приложения Office позволяют пользователям настраивать панели инструментов, строки меню и контекстные меню, обходясь безо всякого программирования, поэтому для решения подобных задач в VBA необходимости нет. Однако, если вы хотите, чтобы окно VBA программы содержало определенный набор панелей инструментов или меню либо вам необходимо внести изменения в панели инструментов или меню при, например, запущенной программе, вам нужно написать программный код, который позволял бы в определенных условиях включать или отключать команды меню.
В последних версиях Office граница между панелями инструментов и меню стала исчезать: вы можете добавлять кнопки в меню или раскрывающиеся списка на любую панель инструментов. В VBA главная строка меню и остальные панели инструментов относятся к коллекции объектов CommandBars. Конечно же, каждая панель инструментов является отдельным объектом CommandBar.
Для работы с определенной панелью инструментов вам следует указать ее имя в коллекции CommandBars. Например, приведенный ниже фрагмент кода обращается к панели инструментов под названием VBA4Dummies:
Dim tbar As Toolbar
Set tbar = CommandBars("VBA4Dummies")
Отображение и размещение панелей инструментов
Для отображения или сокрытия панели инструментов предназначено свойство Visible. Приведенный ниже фрагмент кода отображает панель инструментов под названием VBA4 Dummies.
CommandBars("VBA4Dummies").Visible = True
Для сокрытия панели инструментов свойству Visible следует присвоить значение False.
Для переключения состояния отображения панели инструментов - отображения скрытой панели инструментов, и наоборот, следует использовать оператор Not (см. главу 11).
CommandBars("ReBar").Visible = _
Not (CommandBars("ReBar").Visible)
Если вы хотите изменить место расположения отображенной панели инструментов на экране, используйте такие ее свойства, как Position, RowIndex и Left. При необходимости используйте свойство Protection, чтобы исключить возможность перемещения панели инструментов пользователями. Подробные сведения о каждом из этих свойств приведены в следующей таблице.
Свойство
Назначение
Доступные настройки
Position
Определение того, прикреплена ли панель задач, и если так, определяется сторона, к которой она прикреплена
MsoBarFloating (для неприкрепленной панели инструментов), msoBarTop, msoBarLeft, msoBarRight
RowIndex
Определение порядка закрепления панели инструментов по отношению к другим панелям инструментов, прикрепленным к той же стороне
Целое число больше 0; msoBar RowFist или msoBar RowLast (длязакрепления панели инструментов первой или последней по порядку соответственно)
Left
Определяет расстояние от левого края панели инструментов до левого края экрана
Protection
Определяет способ защиты панели инструментов от действий пользователей
msoBarNoProtection, msoBarNoCustoraize, msoBarNoResize.
msoBarNoMove, msoBarNoChangeVisible, msoBarNoChangeDock, msoBarNoVerticalDock.
msoBarNoHorizonalDock
Настройка кнопок панелей инструментов
Вам не потребуется VBA для создания панели инструментов, содержащей необходимый для вашей работы набор кнопок, - мощные средства настройки методом drag-and-drop, представленные в любом приложении Office, с честью справляются с подобными задачами.
Но если вам необходимо изменить внешний вид панели инструментов или ее реакцию на действия пользователя буквально на лету вследствие возникновения определенных условий.
VBA - именно то, что вам нужно.
Например, предположим, что вам нужно создать кнопку, которая позволит немедленно отправлять копию открытого документа Word определенному человеку или только при работе с документом определенного типа. Кнопка должна срабатывать только в определенных условиях.
Если вы знаете, как написать VBA-код, который сможет определять тип открытого документа, все, что вам необходимо,-- это присвоить свойству Enabled значение True или False в той или иной ситуации.
Работа с определенными кнопками
Если вам необходимо настроить параметры определенной кнопки, вам необходимо идентифицировать эту кнопку в VBA-коде.
Вы можете указать кнопку одним из следующих способов.
* Используя индексный номер кнопке в коллекции Controls объектов панели инструментов, к которой она относится. Индексный номер кнопки соответствует ее расположению на панели инструментов; при этом кнопке, расположенной в крайнем левом (или в крайнем верхнем) углу, соответствует индексный номер 1. Ниже приведен пример подобного обращения к объекту:
CommandBars ("Bar None").Controls ( 3)
Проблема состоит в том, что Office позволяет пользователям перетаскивать кнопки по панели инструментов, поэтому ничто не гарантирует, что вы обращаетесь именно к той кнопке, которая вам необходима.
* Использование свойства Caption кнопки. Вы можете ввести любой заголовок, используя пользовательский интерфейс Office. Выберите команду Сервис=Настройка, перейдите на вкладку Команды появившегося диалогового окна Настройка. Щелкните на интересующей вас кнопке правой кнопкой мыши, чтобы увидеть имя кнопки. Следующая команда ссыпается на кнопку, свойство Caption которой равно "Угадай мой вес".
CommandBars("BarNone").Controls("Угадай мой вес")
Вы можете определить заголовок прямо в программном коде, но вам все равно придется указать кнопку одним из других способов.
* Используя метод FindControl коллекции CommandBars для обнаружения кнопки. Этот метод обнаруживает кнопки по нескольким критериям. Наиболее полезным оказывается использование свойства Tag. Однако, чтобы оно сработало, вам сначала необходимо присвоить этому свойству уникальное значение, используя инструкцию, подобную приведенной ниже.
CommandBars ("Bar None").Controls (,,"Tag0l")
После этого, когда вам необходимо обратить к кнопке из программного кода, вы можете использовать метод FindControl для получения ссылки на кнопку, например, с помощью следующей инструкции:
CommandBars.FindControl(, , "Tag0l")
В этом примере запятые относятся к необязательным параметрам метода FindControl, которые не потребуются вам при нахождении элементов управления (в нашем случае, кнопки) по свойству Tag.
В приведенной ниже таблице перечислены наиболее полезные свойства и методы, позволяющие настраивать кнопки панелей инструментов с помощью VBA.
Свойство или метод
Эффект
Доступные параметры (только для свойств)
Свойство Enabled
Определяет, включена ли кнопка и доступна ли она щелчком мышью либо она отключена, а значит, затемена