Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Леонтьев Б.К. Я изучаю Microsoft Office Visio 2003 (PDF)

.pdf
Скачиваний:
681
Добавлен:
02.05.2014
Размер:
919.27 Кб
Скачать

Использование редактора Visual Basic

241

 

 

 

Вставка модулей в проект

Многие программы VBA содержат один или более модулей — на бор объявлений, следуемых за процедурами. Каждый проект VBA для Microsoft Office Visio содержит модуль класса ThisDocument, который яв ляется объектом, изображающим документ проекта. Вы можете создать дополнительные модули класса, чтобы определить в вашем проекты вы бранные объекты VBA.

Как вставить модуль или модуль класса

Выберите Insert Module или Class Module.

Окно кода изображает пустой модуль, куда вы можете вставить процедуры, создающие эскизы, в которые вы вводите код VBA.

Как добавить процедуры к модулям и модулям класса

1.Выберите Insert Procedure, чтобы открыть диалоговое окно

Add Procedure.

2.В поле Name дайте имя процедуре. Имя процедуры появится в подменю ее модуля в меню Microsoft Office Visio Macros. Имя процедуры не может включать в себя пробелы или зарезервированные слова, к при меру, MsgBox, If или Loop, которые VBA использует в качестве операто ров своего программного языка.

3.В поле Type укажите тип процедуры: Sub, Function или Property. Модули или модули класса могут содержать более одного типа процедур.

Для того, чтобы написать процедуру, которая не требует аргумен тов, вставьте процедуру Sub.

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

Для того, чтобы добавить свойства в модуль класса, вставьте про цедуру Property.

4. В поле Scope (Предел действия) укажите Public или Private. Scope является мерой, определяющей, сколько раз процедура может быть принята другими модулями и программами.

Процедура с личным private пределом может быть принята только модулем, который содержит ее — только процедура внутри того же само го модуля может называться личной процедурой, и личная процедура не может появляться в каком либо меню или в каких либо диалоговых ок нах.

Процедура с общедоступным public пределом может быть принята другими программами и модулями.

242

Использование редактора Visual Basic

 

 

 

Приложение Microsoft Office Visio изображает в меню макросов Macros общедоступные процедуры модулей и модуль класса ThisDocument, который вообще не требует аргументов.

5. Для того, чтобы объявить все локальные переменные в виде ста ционарных, укажите параметр All Local Variables As Statics. Вы можете объявить переменные в вашей процедуре в виде локальных или стацио нарных (общих).

Стационарные переменные существуют весь срок вашей програм мы. Локальные переменные существуют только тогда, когда запущена в действие процедура, в которой они объявляются. В случае, если данная процедура выполняется еще раз, то все локальные переменные назнача ются заново. Однако вы можете сохранить значение всех локальных пе ременных в процедуре на срок вашей программы, сделав их стационар ными и, следовательно, зафиксировав их значение.

6. Нажмите OK.

VBA вставляет эскиз процедуры в окно кода, в котором вы можете вводить код. Эскиз содержит первую и последнюю строки кода для того типа процедуры, которую вы вставили.

Вставка пользовательских форм в ваш проект

В случае, если вы хотите, чтобы ваша программа запрашивала у пользователя какую либо информацию, то вы можете построить пользо вательский интерфейс посредством вставки пользовательских форм. Пользовательская форма содержит регулировки пользовательского ин терфейса (к примеру, командные кнопки и текстовые окна). Когда вы до бавляете пользовательскую форму к вашему проекту, VBA автоматически открывает Инструментальную панель регулировок (Controls Toolbox). Регу лировка — это объект, помещаемый вами на пользовательскую форму, которая имеет собственные свойства и методы. Кроме того, регулировка запускает события, на которые вы можете реагировать. Вы можете ис пользовать регулировки для получения входных данных от пользователя, для демонстрации выходных данных и для запуска процедур события.

Как добавить пользовательскую форму к вашему проекту

1.Выберите Insert UserForm.

2.Укажите регулировки, которые вы хотите добавить к пользова тельской форме из Controls Toolbox и перетащите их на пользовательскую форму.

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

Использование редактора Visual Basic

243

 

 

 

4. Выберите событие, на которое вы хотите отреагировать из выпа дающего списка событий и процедур в кодовом окне. Затем вы можете начать печатать ваш код. Или вставьте процедуру и начните печатать ваш код уже в эскизе процедуры.

Импорт файлов в ваш проект и экспорт файлов из вашего проекта

Для того, чтобы импортировать объект в ваш проект, выберите FileImport File. Вы можете выбрать любой модуль VBA (файлы с расшире нием .bas), пользовательскую форму (файлы с расширением .frm) или модуль класса (файлы с расширением .cls).

Для того, чтобы экспортировать объект из вашего проекта и сде лать его доступным для импорта в другие проекты, укажите в окне Project Explorer объект, который вы хотите экспортировать, выберите FileExport File и укажите место, где вы хотите сохранить данный файл. При экспорте объект не удаляется из вашего проекта.

Кроме того, вы можете «перетаскивать» проекты или объекты проекта из файла в файл пакета Microsoft Office Visio, указывая в окне Project Explorer тот проект или объекта проекта, который вы хотите пере двинуть. Объект проекта автоматически сохраняется в папке проекта. Проект имеет ссылку в папке References, так как файл Microsoft Office Visio может содержать только один проект, но этот проект может ссы латься на другие проекты.

Важно: Вы не можете перетаскивать модуль класса ThisDocument из файла в файл пакета Microsoft Office Visio, но вы можете перетаскивать или копировать и вставлять код из ThisDocument в другие предметы проекта.

Использование библиотек

Библиотека Microsoft Office Visio содержит описания режима Авто матизации для объектов, свойств, методов и событий, которые задейству ет «движок» Microsoft Office Visio. Проекты Microsoft Basic for Applications (VBA), принадлежащие документам Microsoft Office Visio, автоматически ссылаются на библиотеку Microsoft Office Visio, которую вы используете для определения объектных типов Microsoft Office Visio в вашей програм ме. Использование объектных типов Microsoft Office Visio, объявленных в библиотеке Microsoft Office Visio, увеличивает скорость вашей программы, так как VBA интерпретирует объекты Microsoft Office Visio в расчетное вре мя, а не во время действия.

Когда вы составляете программу, VBA проверяет синтаксис, нахо дит ошибки программирования и определяет соответствие объектных типов типовым библиотекам. В случае, если вы используете тип общих

244

Использование редактора Visual Basic

 

 

 

переменных (к примеру, Object), то VBA не интерпретирует их во время запуска программы; в это время VBA запрашивает «движок» Microsoft Office Visio об объектных ссылках. Этот дополнительный опрос умень шает скорость вашей программы.

Типовая библиотека также содержит общие символические по стоянные, определенные для аргументов и поставляющие значения свойств и методов. Поскольку большинство аргументов для свойств и методов являются цифровыми значениями, константы могут облегчить написание и чтение кода. Допустим, вы хотите узнать, какой тип окна изображает объект Окно (Window). Свойство Type объекта Window дает целое число, указывающее на тип окна. Вы можете посмотреть на содер жание типовой библиотеки Microsoft Office Visio через Object Browser.

Использование обозревателя объектов

Вы можете использовать Visual Basic Object Browser, чтобы посмо треть типовую библиотеку Обозреватель отображает константы, классы (объекты) и члены класса (свойства, методы и события) типовых библи отек, на которые ссылаются открытые проекты. Обозреватель также ото бражает свойства, методы, события и константы Microsoft Office Visio в виде членов в списке Members Of. Поле Подробности (Details) отображает синтаксис каждого члена в виде эскиза кода, который вы можете скопи ровать и вставить или перетащить в модуль. Затем вы можете подставить туда собственные переменные и аргументы. Использование кодового эс киза уменьшает вероятность ошибок при выводе на печать.

Как использовать Object Browser

1.Выберите View Object Browser.

2.Для того, чтобы просмотреть или найти объект, свойство, ме тод, событие или константу Microsoft Office Visio, введите ее имя в текс товом поле Search или нажмите по любому члену в списке Members Of.

Настройка ссылок на типовые библиотеки

Приложения, поддерживающие Автоматизацию, поставляют типо вую библиотеку для описания объектов. В случае, если вы хотите получить доступ к объектам другого приложения из вашего решения Microsoft Office Visio, то выберите Tools References и укажите типовую библиотеку, кото рую вы ищите в списке доступных ссылок Available References. Кроме того, вы можете использовать эту процедуру, чтобы настроить ссылку на прило жение Microsoft Office Visio из любого другого приложения, которое под держивает Автоматизацию. Например, вы можете настроить ссылку на приложение Microsoft Office Visio из приложения Microsoft Word и далее использовать объекты Microsoft Office Visio в вашем приложении Word.

Использование редактора Visual Basic

245

 

 

 

Любая типовая библиотека, отмеченная в списке доступных ссы лок Available References появляется в окне Project/Library вашего проекта. Вы можете настроить ссылку на любой открытый документ Microsoft Office Visio или просмотреть любой неоткрытый документ Microsoft Office Visio в диалоговом окне ссылок References.

Важно: Для того, чтобы просмотреть только класс и члены в типо вой библиотеке Microsoft Office Visio, выберите в окне Project/Library по ле Microsoft Office Visio.

Использование объектных типов Microsoft Office Visio

Вы можете использовать преимущества типовой библиотеки Microsoft Office Visio и писать более эффективный код. При использова нии объектных типов Microsoft Office Visio, объявленных в типовой биб лиотеке Microsoft Office Visio, вы можете объявить переменные в виде особых типов (к примеру, Microsoft Office Visio.Page):

Dim pagObj as Microsoft Office Visio.Page

Использование объектного типа Microsoft Office Visio (к примеру, Microsoft Office Visio.Page) позволяет вашей программе указывать тип объекта, на который она ссылается в типовой библиотеке Microsoft Office Visio в расчетное время. Это называется ранним сращиванием. Этот при мер использует Microsoft Office Visio, чтобы информировать программу о том, что она ссылается на объектные типы Microsoft Office Visio в типо вой библиотеке Microsoft Office Visio, и этот пример использует Page, чтобы информировать программу том, что переменная pagObj является объектом Page. Вот несколько обычных объектных типов:

Dim docsObj As Microsoft Office Visio.Documents'A Documents col lection

Dim docObj As Microsoft Office Visio.Document 'A Document object Dim shpsObj As Microsoft Office Visio.Shapes 'A Shapes collection Dim shpObj As Microsoft Office Visio Shape 'A Shape object

Когда вы печатаете пропуск после объекта или библиотечного ти па, список доступных объектных типов, свойств и методов для предше ствующего типа объекта или переменной появляются автоматически. Для того, чтобы вставить в ваш код объектный тип из списка, дважды на жмите на типе в списке.

Важно: В случае, если вы при работе с кодовым окном не видите окна Auto List, то выберите Tools Options Editor и укажите параметр

Auto List Members.

В этом примере соответствующим объектным типом является

Page.

246

Использование редактора Visual Basic

 

 

 

Использование всеобщих (global) объектов и объектов ThisDocument

В отличие от самостоятельной программы, которая нуждается в приобретении ссылки на объект Приложение (Application) Microsoft Office Visio с помощью создания или получения его, код в проекте Microsoft Visual Basic for Applications (VBA) выполняется при запуске примера Microsoft Office Visio, поэтому вам не нужно приобретать ссылку на объ ект Application. Инструментальный набор Microsoft Office Visio поставляет global объект, который ссылается на пример Microsoft Office Visio. Дви жок Microsoft Office Visio также поставляет объект ThisDocument, который изображает документ Microsoft Office Visio, связанный с вашим проектом.

Использование всеобщего объекта Microsoft Office Visio

Всеобщий объект изображает пример и предоставляет более пря мой доступ к некоторым свойствам.

Свойства всеобщего объекта Microsoft Office Visio не имеют при ставки (префикса) с ссылкой на объект.

Всеобщий объект Microsoft Office Visio и его свой ства

Объект Application является свойством всеобщего объекта Microsoft Office Visio, поэтому вы можете получить доступ к любому свойству объекта Application через прямую ссылку на свойство Application всеобщего объекта Microsoft Office Visio. Перед вами три примера кода, с помощью которого приобретается первый документ в наборе Documents

— все три используют разный синтаксис. Пример1 создает объект Application. Этот код обычно используется при написании внешней про граммы:

Dim appMicrosoft Office Visio As Microsoft Office Visio.Application

Dim docsObj As Microsoft Office Visio.Documents Dim docObj As Microsoft Office Visio.Document

Set appMicrosoft Office Visio = CreateObject("visio.application") Set docsObj = appMicrosoft Office Visio.Documents

Set docObj = docsObj.Item(1) Application

ActiveDocument Document Documents Window

Использование редактора Visual Basic

247

 

 

 

Windows ActivePage ActiveWindow Addon Addons

VBE Documents

Пример 2 использует свойство Application всеобщего объекта Microsoft Office Visio:

Dim docsObj As Microsoft Office Visio.Documents Dim docObj As Microsoft Office Visio.Document Set docsObj = Application.Documents

Set docObj = docsObj.Item(1)

Пример 3 имеет непосредственный доступ к свойству Documents всеобщего объекта Microsoft Office Visio:

Dim docObj As Microsoft Office Visio.Document Set docObj = Documents.Item(1)

Обратите внимание, что в примерах 2 и 3 Application и Documents не предшествует объект. Когда вы ссылаетесь на любое свойство или ме тод всеобщего объекта Microsoft Office Visio, вам не нужно объявлять пе ременную для всеобщего объекта или ссылаться на него, как на предше ствующий объект свойства — всеобщий объект это уже подразумевает.

Третий пример имеет более прямой метод доступа к набору Documents из проекта VBA.

Предлагаем вам пару примеров кода для наиболее используемых свойств всеобщего объекта Microsoft Office Visio:

Set docObj = ActiveDocument Set pagObj = ActivePage Set winObj = ActiveWindow

Важно: Всеобщий объект Microsoft Office Visio доступен только при написании кода в проекте VBA для документа Microsoft Office Visio.

Использование объекта ThisDocument

Любой проект VBA в вашем приложении Microsoft Office Visio со держит модуль класса для режима умолчания, называемый ThisDocument.

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

248

Использование редактора Visual Basic

 

 

 

Документы и связанные объекты более высокого порядка

В случае, если вы хотите манипулировать документом, но доку мент не должен быть связан с вашим проектом VBA, то приобретите объ ект Document из набора Documents. В случае, если вы хотите манипулиро вать документом, связанным с вашим проектом VBA, то используйте объект ThisDocument. Например, чтобы сослаться на первую страницу чертежа Hello.vsd, вы должны получить объект Document из набора Docu# ments всеобщего объекта. Следующий пример получает первую страницу Hello.vsd из набора Pages документа.

Set docObj = Documents.Item("hello.vsd") Set pagObj = docObj.Pages.Item(1)

В случае, если Hello.vsd является документом, связанным с вашим проектом VBA, то вы можете просто использовать объект ThisDocument, как это показано на следующем примере:

Set pagObj = ThisDocument.Pages.Item(1)

При ссылке на объект Document вы возвращаете себе другие объ екты Microsoft Office Visio с помощью приобретения свойств объекта Document и далее из других объектов в объектной иерархии. Вы можете добавить свойства и методы к объекту ThisDocument, так как он является растяжимым объектом, то есть объектом, чью функциональность вы мо жете расширить. Объект ThisDocument является единственным растяжи мым объектом, который поставляется инструментальным набором Microsoft Office Visio.

Вы можете указать ThisDocument в окне Project Explorer и изменить его свойства (к примеру, страничные настройки и стиль в режиме по умолчанию); кроме того, в окне Properties вы можете изменить свойства документа.

Запуск кода VBA из приложения Microsoft Office Visio

Вы можете запустить в действие ваш код Microsoft Visual Basic for Applications (VBA) в программе Visual Basic Editor, чтобы проверить и ис править ее в ходе разработки. Пользователь может запустить в действие ваш законченный макрос в пользовательском интерфейсе Microsoft Office Visio, выбрав его из подменю Macros в меню Инструменты (Tools). Макрос — это процедура VBA, которая не требует аргументов. Процеду ры, требующие аргументов, не появляются в подменю Macros.

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

Использование редактора Visual Basic

249

 

 

 

Как запустить в действие макрос из редактора Visual Basic

1.Выберите Tools Macros.

2.В списке Macros укажите нужный вам макрос и нажмите на Run.

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

Macros In.

Личные процедуры не появляются ни в каких либо меню, ни в ка ких либо диалоговых окнах.

Другой способ:

1. В окне Project Explorer откройте модуль, который содержит ма

крос.

2.В окне кода нажмите на месте вставки макроса.

3.Выберите Run Run Sub/UserForm.

Макрос, содержащий точку вставки, запустится в действие.

Как запустить макрос из диалогового окна Microsoft Office Visio Macros

1.В приложении Microsoft Office Visio выберите Tools Macros.

2.В списке Macros укажите вашу программу и нажмите на Run.

Важно: С точки зрения пользователя неважно, если программа, запускаемая пользователем, является дополнением или макросом, по этому приложение Microsoft Office Visio объединяет эти программы в ди алоговых окнах. Например, вы можете запустить в действие дополнение или макрос из диалогового окна Macros или из меню Macros.

Как «снабдить» описанием ваш макрос, который появляется в диалоговом окне Macros

1.В Visual Basic Editor откройте Object Browser.

2.Выберите проект, который содержит макрос в окне Project/Lib#

rary.

3.В списке Class укажите модуль, который содержит макрос, и на жмите правой кнопкой на макросе в списке Members Of, а затем выбери те Properties.

4.Введите описание в поле Description.

250

Использование редактора Visual Basic

 

 

 

Как запустить в действие ваш макрос из меню Microsoft Office Visio Macros

1.Выберите Tools Macros.

2.В меню Macros выберите проект, который содержит ваши мак росы, и выберите нужный макрос.

В случае, если вы хотите, чтобы ваши макросы появлялись в меню Macros, а не в модуле, который содержит ваши макросы, дайте имя мо дулю так: ShowInMenu. Модуль ShowInMenu не появляется в меню

Microsoft Office Visio Macros, но его макросы появляются.

Глава 6. Ошибки

В случае, если во время выполнения программы происходит ка кая то ошибка, то Microsoft Visual Basic for Applications (VBA) генерирует сообщение об ошибке и останавливает выполнение. Вы можете предотв ратить множество ошибок, проверив допущения перед выполнением ко да, которое окажется неудачным, если допущения будут неверны. Вы мо жете «вылавливать» и исправлять ошибки, используя в вашей программе выражение On Error.

Запуск программы в правильном контексте

Решив, в каком контексте запускать программу, вы можете сде лать некоторые допущения относительно программного окружения. На пример, если вы пишите программу VBA для управления поведения двойного щелчка, то вы можете допустить, что документ открыт и что двойным щелчком выбирается образ в активном окне. Однако это огра ничивает способность программы контролировать действия пользовате ля. Например, ничто не остановит пользователя от попытки запустить программу VBA, разработанную для управления событием двойного щелчка, из диалогового окна Macros, вместо того, чтобы дважды щелк нуть на образе.

В случае, если вашей программе требуется выбранный образ, ука жите свойство Selection активного окна, чтобы убедиться в том, что оно содержит хотя бы один объект.

Dim selectObj As Microsoft Office Visio.Selection Set selectObj = ActiveWindow.Selection

If selectObj.Count = 0 Then

MsgBox "You must select a shape first." , , "Select shape" Else

Использование редактора Visual Basic

251

 

 

 

' Continue processing End If

Проверка: Объекты и получаемые значения существуют

Перед попыткой доступа к объектам убедитесь в том, что они име ются в наборе.

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

If ThisDocument.Masters.Count = 0 Then MsgBox "Document has no masters."

'Go to an error handler End If

В случае, если свойство или метод должны что то предоставлять, то неплохо было бы убедиться в том, что они действительно это делают. Например, если ваша программа форматирует текст образа, то вы долж ны убедиться в том, образ Shape содержит текст:

Dim shpObj As Microsoft Office Visio.Shape Dim strText As String

Set shpObj = ActivePage.Shapes.Items(1) strText = shpObj.Text

If strText = "" Then

MsgBox "The selected shape has no text to format." , , "Format Shape Text"

Else

'Continue processing End If

Проверка значений на ошибки

VBA имеет функцию Ошибка (Error), которая выдает в ответ стро ку. Когда в приложении Microsoft Office Visio возникает ошибка, она вы дает код ошибки и строку, которая описывает ошибку. Используйте функцию Error, чтобы получить строку, связанную с кодом ошибки, ко торый выдается приложением Microsoft Office Visio.

Объект Microsoft Office Visio Cell имеет свойство Error, которое указывает, произошла ли при выполнении формулы ячейки какая либо ошибка. В случае, если ваша программа меняет формулы ShapeSheet, проверьте это свойство и убедитесь в том, что формула работает ожидае мым образом.

252

Использование редактора Visual Basic

 

 

 

Глава 7.

Управление проектом VBA

Для эффективной работы и последующей минимизации задач на поддержание функциональности используйте ниже приводимые при емы управления проектом. Удаляйте предметы проекта, которые вам больше не нужны. Это уменьшит размер файла и упростит обслужива ние проекта.

При необходимости защищайте ваш код от просмотра и видоиз менения со стороны пользователей.

Разрабатывайте модули, модули класса и пользовательские формы для многократного использования. Это сэкономит время на написание кода. Кроме того, Microsoft Visual Basic for Applications (VBA) 6.0 позво ляет вам запускать в действие дополнения, с которыми могут работать и другие приложения.

Перемещение предметов проекта

При перемещении предмета вы удаляете его из списка проекта, так как нельзя аннулировать действие Remove. Убедитесь в том, что ос тавшийся код в других модулях и пользовательских формах не ссылается на код в удаленном предмете.

Как удалить предмет проекта

1.Укажите предмет в окне Project Explorer.

2.Выберите File Remove <Name>.

3.Программа спросит вас, хотите ли вы экспортировать предмет перед его удалением. Нажмите на Yes, чтобы открыть диалоговое окно Export File или нажмите на No, чтобы удалить предмет.

Защита вашего кода

Для того, чтобы защитить ваш код от просмотра и видоизменения со стороны пользователей, просто заблокируйте проект. Это означает, что вам необходимо указать пароль, который нужно будет вводить перед просмотром проекта в окне Project Explorer.

Для того, чтобы блокировать ваш проект VBA от просмотра:

1.Выберите Tools Drawing Name Properties.

2.Нажмите на Protection и укажите параметр Lock Project For

Viewing.

3.Введите пароль и подтвердите его.

Использование редактора Visual Basic

253

 

 

 

4. Сохраните ваш файл Microsoft Office Visio и закройте его. При следующем открытии вашего файла Microsoft Office Visio проект будет блокирован. В случае, если пользователь захочет просмотреть или отре дактировать проект, ему придется ввести пароль.

Использование встроенного диспетчера Add in Manager

В редакторе Visual Basic вы можете использовать встроенный дис петчер для управления дополнительными программами, которые расши ряют среду разработки VBA. Эти позволяют разработчику использовать конкретную дополнительную программу для того, чтобы добавлять ее функциональность к любому приложению VBA 6.0, включая приложе ние Microsoft Office Visio.

Для того, чтобы вывести встроенный диспетчер на экран из редак тора Visual Basic, выберите Add#ins Add#ins Manager. При этом появит ся диалоговое окно встроенного диспетчера вместе со списком других расширений Microsoft Office Visio.

Глава 8.

Программирование в Microsoft Office Visio 2003

Работа с формами

Формы — это окна интерфейса программы. С их помощью можно сообщать пользователю необходимую информацию или получать ее в от вет. Для создания форм используются средства Visual Basic for Applicati ons (VBA).

Создать новую форму: Выберите Insert, а далее дайте команду User#

Form.

Поле отображения текста — отражает текстовую информацию.

Поле ввода текста — позволяет пользователю ввести текстовую информацию.

Несколько видов списков — средства выбора варианта наподобие ниспадающего перечня шрифтов.

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

254

Использование редактора Visual Basic

 

 

 

Переключатель — элемент, который также может находиться во включенном, выключенном и неактивном состоянии. В отличие от флажка, переключатели должны быть объединены в группы с помощью элемента «рамка». В случае, если же один из группы включен, то осталь ные уже не могут быть в таком состоянии.

В Visio 2003 есть диалоговые окна, которые содержат как флажки (принято называть «функции»), так и переключатели. Кстати, почти все закладки меню Tools состоят из флажков, а меню Insert — из переключа телей.

Выключатель — кнопка, которая может находиться в нажатом или отжатом состоянии.

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

Командная кнопка — обычная, наподобие кнопки OK или «Отме на» в любом диалоговом окне.

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

Так, 9 й элемент может использоваться в какой либо программе, в частности базе данных, отображая вкладки с именами сотрудников. На каждого из них в нескольких полях есть стандартная текстовая информа ция, и число этих полей для всех одинаково. В этом случае разумнее будет использовать именно 9 й элемент, соответственно изменяя содер жимое полей с текстом при переключении вкладок, чем создавать с по мощью 10 го элемента набор страниц с отдельными полями текста на каждой из них, что резко увеличивает объем программы и усложняет ее.

К сожалению, в настоящее время нет единой номенклатуры этих двух элементов форм VBA, поэтому в справочной системе и литературе можно встретить разные названия для каждого из них.

Использование редактора Visual Basic

255

 

 

 

Полоса прокрутки может передавать в программу число, равное расстоянию в пунктах от ее начала. Верхний предел расстояния неогра ничен.

Счетчик — две кнопки со стрелками. Может передавать в про грамму свое значение от 1 до 100.

Рисунок — в этот элемент можно вставить из файла рисунок, ко торый будет храниться в форме (и шаблоне с ней).

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

Большой набор свойств имеет также и сама форма. С помощью ниспадающего меню в «Окне свойств» можно быстро перейти к свойст вам выбранного элемента.

Среди наиболее распространенных свойств, имеющихся почти у всех элементов, можно отметить следующие: Caption — надпись на по верхности или в заголовке, если он есть; Top и Left — координаты верх него левого угла элемента; Height и Width — высота и ширина; Enabled — доступность для изменений пользователем; TabIndex — число, показыва ющее, когда можно изменить в данном элементе содержание или состо яние при переходах между элементами с помощью клавиши табуляции (можно запретить переход на какой либо элемент, указав его свойство

TabStop как False).

Следует обратить внимание и на свойства формы: Picture, Pic# tureAlignment, PictureSizeMode, PictureTiling. С их помощью на поверх ность формы можно поместить какой нибудь фоновый рисунок.

Следует помнить, что создание элемента — только начало работы над формой. Сам по себе элемент никаких действий не выполняет, кро ме, конечно, тех, которые его определяют: кнопка активизируется от щелчка мыши или клавиши Enter, в списке представляются значения и т.д. Для того, чтобы элемент выполнял какое нибудь действие, когда на него оказывается влияние, надо написать программу «реакции на собы тия». С элементом может произойти множество событий: двойной щел чок мыши на нем, проводка курсора мыши, ввод текста в соответствую щее поле и т.д. Итак, чтобы записать программу, необходимо два раза щелкнуть на элементе. Тогда откроется окно и появится «заготовка» сле дующего вида:

Private Sub UserForm_Click()

End Sub

256

Использование редактора Visual Basic

 

 

 

Теперь можно вводить команды, которые выполняются в том слу чае, когда в заголовке происходит событие. Оно считается стандартным для кнопок, флажков, рисунков, рамок, переключателей и окон отобра жения текста. Для остальных элементов — полей ввода текста, полос прокрутки, счетчиков и др. — стандартным считается событие Change, т. е. их изменение.

Чтобы получить список возможных событий для элемента, следу ет поставить курсор внутрь процедуры обработки стандартного события и выбрать нужное, которое размещается справа вверху окна написания программы. Слева вверху этого же окна указаны все процедуры и функ ции программы реакции формы на события. В последней могут быть представлены процедуры и функции, не связанные с элементами формы.

Некоторые события имеют параметры, которые передаются про грамме. Так, процедура обработки события KeyDown (т. е. нажатие ка кой либо клавиши при активном элементе) имеет вид:

Private Sub CommandButton1_KeyDown(ByVal

KeyCode As MSForms.ReturnInteger, ByVal

Shift As Integer)

End Sub

Переменная KeyCode после срабатывания данной процедуры бу дет иметь значение, равное коду нажатой клавиши, а переменная Shift будет составлять 1, если соответствующая клавиша была нажата, и 0, ес ли не была. Эти переменные можно использовать в процедуре.

Все свойства можно изменять и из программы. Например, коман да TextBox1.Enabled=True позволяет пользователю ввести текст в поле ввода TextBox1, а команда CheckBox1.Value=False снимет флажок с име нем CheckBox1. Такая возможность делает формы VBA динамическими, т.е. их содержимое может в ответ на действия пользователя изменяться немедленно, причем без выгрузки и повторной загрузки формы. Сама форма может работать как обычное диалоговое окно программы для Windows XP — к примеру, выбор пользователем значения из списка поз воляет каждый раз выводить в форму какой либо текст, неодинаковый для разных значений. Наиболее часто динамические формы применяют ся для отключения элементов, которые не могут быть использованными при каких либо условиях. Например, в форме, состоящей из поля ввода текста и кнопки, вызывающей процедуру вычисления квадратного кор ня, кнопка может становиться неактивной при написании в поле ввода отрицательного числа.

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

Использование редактора Visual Basic

257

 

 

 

Следует иметь в виду, что после выгрузки формы все переменные, описанные в программе реакции формы на события, обнуляются. По этому получить от формы какие либо данные уже нельзя. В случае, если в результате работы формы в основную программу должны передаваться некоторые данные, то нужно с помощью инструкции Public объявить в этой программе несколько переменных. Затем в программе реакции формы на события записать в них всю требующуюся информацию, полу ченную от пользователя, и потом снова использовать значения этих пе ременных в основной программе.

Программа реакции формы на события представляет собой пол ноценный модуль проекта, за исключением лишь того, что процедуры из него могут быть вызваны только в другой программе. Так как вызов фор мы на исполнение с помощью кнопки, строки меню или сочетания кла виш невозможен, то необходимо в основной программе указать команду ИмяФормы.Show и назначить ей кнопки и сочетания клавиш. Следует учесть, что если даже все требуемые функции реализованы в процедурах программы реакции формы на события, то все равно приходится создать основную программу, хотя бы только для вызова данной формы.

Так же как и модули, формы могут быть сохранены в отдельных файлах с помощью функции Export File.

Однако в отличие от модулей, при сохранении форм получается два файла: один содержит текст программы реакции формы на события, другой — информацию о расположении элементов на форме, их свойст вах, а также рисунки и фон формы.

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

Операторы цикла и перехода

В случае, если нужно повторить ту или иную группу операций не сколько раз, то используются такие операторы цикла, как Do...Loop,

For...Next и For Each...Next.

А если требуется совершить какие либо действия в зависимости от наличия определенных условий, а также от значения той или иной пере менной, то применяются операторы условия: If...Then...Else и Select Case.

Переход к другой части той же программы выполняется с помо щью оператора GoTo «имя метки».

В то место, куда нужно совершить переход, на отдельной строке следует проставить метку с соответствующим именем и за ней двоеточие.

258

Использование редактора Visual Basic

 

 

 

Для того, чтобы ускорить выполнение работающей с текстом про граммы, рекомендуется почаще использовать команду ActiveDocument. UndoClear, которая позволяет очистить список выполненных команд (однако делает невозможной отмену последних изменений).

Для того, чтобы система не тратила время и ресурсы на постоян ное обновление экрана и отображение изменений и чтобы выполнять визуальный контроль происходящих изменений, поставьте в начало про граммы команду Application. Screen Updating = False, а в конец — коман ду Application.ScreenUpdating = True.

В случае, если возникает нестандартная ошибка, то с помощью команды On Error goto «имя метки» можно заставить программу перехо дить к указанной метке, а поставив перед каким либо фрагментом про граммы команду On Error Resume Next, можно приказать ей (при возник новении ошибки) начать выполнение следующей команды.

О шифровании и паролях

Защита доступа к информации с помощью пароля — самый рас пространенный способ хранения секретов на ПК. Она используется практически везде — начиная с задания пароля на вход в Интернет и за канчивая установкой пароля на проекты VBA. Однако о принципах та кой защиты большинству пользователей известно довольно мало. Вот некоторые сведения.

Среди различных математических логических функций есть одна весьма примечательная функция — XOR. Команда, выполняющая ее, имеется практически во всех языках программирования. XOR — это та же функция ИЛИ (если хотя бы на один из входов было подано значение 1, то и результат получается равным 1), однако она при подаче на вход сразу двух единиц выдает 0. Обратите внимание на одно интересное свойство функции: если на ее вход подать значение первого входа и по лучившийся после этого результат, то выйдет значение второго входа. То же самое происходит и со значением второго входа и с полученным результатом: в результате образуется значение первого входа. Следова тельно, зная итоговую величину функции XOR и данные на любом из входов, можно получить значение на другом входе — т.е. функция XOR обратима.

Отсюда и вытекает принцип шифрования паролем. Берем некий текст, который должен быть зашифрован, и определенное слово, вы бранное в качестве пароля. Текст — это последовательность букв байтов. Поскольку байт равен восьми битам, это позволяет представить текст как последовательность битов — нулей и единиц.

Использование редактора Visual Basic

259

 

 

 

Зная зашифрованный текст и ту часть незашифрованного, кото рая соответствует определенной части обычного, можно с использовани ем той же функции XOR определить пароль, а затем с его помощью рас шифровать остальную часть текста. Потому то в современных системах для защиты текста паролем и применяют более сложные способы шиф рования, к примеру повторение пароля не несколько раз подряд, а через определенные промежутки, либо расположив символы пароля в обрат ном порядке. Но всегда необходима функция XOR благодаря своей обра тимости.

Способы создания программ

Многие используют Visio 2003 как среду разработки программных продуктов посредством Visual Basic for Applications — языку программи рования. Visual Basic for Applications — вполне полнофункциональный язык программирования, с помощью которого можно создавать вполне законченные и работоспособные программы. На языке Visual Basic for Applications могут начать создавать программы даже те, кто ранее никог да не занимался программированием, причем для этого не потребуются ни толстые книги, ни дорогие курсы обучения. Необходимо лишь уметь думать, наблюдать, исследовать, ставить эксперименты, делать выводы

— в общем, проявлять способности к научному анализу. И именно это делает программирование на Visual Basic for Applications прекрасным способом выработки в себе способности к научному подходу к различ ным явлениям.

Средства программирования

В поставку Visio 2003 входит интерпретатор языка программиро вания Visual Basic for Applications, а также средства создания полноцен ных программных продуктов.

Компоненты проекта делятся на категории:

ThisDocument

При выборе пункта View Object произойдет переход к соответству ющему документу — к его содержимому.

В чертеж Visio 2003 можно вставить специальные объекты — кноп ки, поля ввода текста, поля выбора вариантов и др. В этом случае после выбора пункта контекстного меню объекта ThisDocument можно напи сать программу, которая будет выполняться при нажатии соответствую щей кнопки, введении текста и др. К написанию такой программы мож но перейти и из контекстного меню самого специального объекта.

260

Использование редактора Visual Basic

 

 

 

Модули

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

Для начала написания программы надо в ее окне написать Sub Уникальное имя программы, после чего Visio сама добавит фразу End Sub, и между этими двумя фразами должен заключаться текст основной части программы.

Модули класса

Класс — это особое понятие, играющее очень важную роль в про граммировании.

Вкратце это тип объектов, определяемых программистом.

Формы

Формы — это диалоговые окна программ, которые можно разра ботать по своему вкусу.

Редактор Visual Basic обладает дружественным интерфейсом. Он постоянно подсказывает программисту, какие параметры имеет та или иная команда, как надо корректно ее написать. Например, если набрать команду MsgBox, а после нее открывающую круглую скобку, то над кур сором сразу же появится подсказка. С ее помощью можно получить ин формацию о синтаксисе данной команды, т.е. о том, как конкретно нуж но задавать ее параметры в тексте программы — в данном случае текст окошка, количество кнопок, значок и звук при появлении диалогового окна.

Язык Visual Basic for Applications объектно ориентированный. Это значит, что очень многие его команды имеют особенный формат, отлич ный, скажем, от формата Basic или Pascal. Типичная команда Visual Basic имеет такой вид:

<Объект>.<Объект, входящий в первый объект>.

<...>.<Тот объект, с которым нужно произвести действие>. <Собственно действие>.

Иными словами, каждая команда пишется как бы «с конца»: вна чале определяется то, над чем надо произвести действие — объект, а за тем само действие — метод. Разделителями компонентов команды слу жат знаки «точка». Вот пример такой команды:

Application.ActiveDocument.PageSetup.Orientation = wdOrientLandscape.