- •Введение в Visual Basic For Applications
- •Создание макроса для Microsoft Excel/Visual Basic for Windows 95
- •Объекты, свойства и методы vba
- •Типы данных
- •Встроенные типы данных
- •Переменные и их объявление
- •Объявление численных и строковых переменных
- •Объявление переменных массива
- •Объявление и присваивание объектных переменных
- •Арифметические и логические операции Visual Basic
- •Использование встроенных функций Visual Basic
- •Математические функции
- •Строковые функции
- •Операторы Оператор присваивания
- •Операторы условного перехода If - Then и If-Then-Else
- •Оператор выбора Select Case
- •Логически прерываемые
- •Диалоговые окона Встроенные диалоговые окона
- •Применение функции MsgBox()
- •Создание простого окна сообщения
- •Добавление командных кнопок в окно сообщения для создания диалогового окна
- •Получение значений от функции MsgBox
- •Запись заголовка в диалоговое окно
- •Применение функции InputBox
- •Применение диалоговых окон других типов
- •Диалоговые окна приложения
- •Диалоговые окна пользователя
- •Добавление новой страницы диалога.
- •Помещение объектов в бланк.
- •Отображение диалогового окна пользователя.
- •Подключение процедур к объектам диалогового окна пользователя.
- •Объекты диалогового окна пользователя.
- •Объект «Командная кнопка».
- •Объект «Метка».
- •Объект «Окно редактирования».
- •Объект «Групповое окно».
- •Объект «Контрольный индикатор».
- •Объект «Кнопка выбора».
- •Объект «Окно списка».
- •Элементы управления диалоговых окон
- •Работа с файлами
- •Файлы последовательного и произвольного доступа
- •Чтение и запись последовательных файлов
- •Чтение и запись файлов произвольного доступа
- •Реорганизация данных в файле произвольного доступа
- •Создание пользовательских объектов Определение пользовательского объекта
- •Создание пользовательских свойств
- •Коммуникации Технология dde Что такое dde ?
- •Применение dde.
- •Открытие коммуникационного канала dde.
- •Закрытие канала dde.
- •Технология ole
Технология ole
OLE имеет значительно больше возможностей, чем DDE. Если DDE просто обеспечивает обмен данными между программами, то OLE позволяет передавать объекты. Существуют 2 различных типа OLE: Linking and Embedding (Связь и внедрение) и OLE Automation(Автоматизация OLE).
С помощью Linking and Embedding вы внедряете объекты одной программы в документы другой. Внедряемые объекты создаются копированием объекта в одной программе, а затем вклеиванием связи с этим объектом в другую программу. После этого объект можно редактировать в породившей его программе. Программа, отображая внедренный объект, не должна ничего знать о том, как он создается и ли изменяется, - она только отображает этот объект.
OLE Automation позволяет одному объекту управлять другой программой посредством доступа к ее объектам и методам. При использовании OLE Automation Объекты и методы подключенной программы становятся расширением языка Visual Basic.
Применение OLE Automation
Прежде чем использовать объекты и методы другой программы, вы должны все узнать об этих объектах. Если данная программа содержит библиотеку объектов, зарегистрированную в системе и доступную, вы можете использовать Object Browser для ознакомления с объектами и методами, включенными в эту библиотеку. Если программа не разрешает доступ к библиотеке, то вы должны обратится к документации на программу - чтобы ознакомится с доступными объектами и методами. Для получения объектов программы с помощью Object Browser необходимо зарегистрировать эту программу в Excell. Вначале укажите директиву Tools/ References для отображения диалогового окна References. Затем включите контрольный индикатор, соответствующий данной программе, в окне списка Avalaible References. После того, как программа зарегистрирована, все ее объекты становятся доступными Visual Basic.
Теперь вы можете использовать Object Browser для изучения объектов другой программы. Кроме того, Object Browser отображает имя, под которым зарегестрирована в системе данная программа.
Предупреждение
Имя, используемое в целях регистрации программы для коммуникаций OLE, отличается от имени используемого для DDE. Это объясняется тем, что связывается OLE с программой, а DDE - с объектами из библиотеки ee oбъектов.
Объекты другой программы могут иметь те же имена, что и объекты в вашей программе; следовательно, для доступа надежнее пользоваться полными именами. Например если вы запустите MS Excell VBA и выполните оператор APPlication.Name
то получите имя Excell. Но если вы выполните оператор
Msproject. APPlication.Name
то получите имя Project.
Для доступа к любому объекту, находящемуся вне текущей программы, используете полную ссылку, что не только даст возможность уверенно получить нужный объект, но и повысить читабельность вашей программы.
Создание и открытие объектов.
Для программ, управляемых посредством OLE Automation , существуют 2 метода создания новых объектов или открытия уже существующих объектов: Createobject() и GetObject(). В общем случае объектами, к которым вы получаете доступ с помощью указанных методов, являются документы подключенных программ. Для полностью OLE - согласованных программ, таких как Excell, открытие или создание новых файлов осуществляется методами связанных объектов а не методами Create object() и GetObject(). Для частично OLE - согласованных программ вроде Word создание связей с документами обеспечивается с помощью методов.
Метод Createobject имеет синтаксис
Set объектная_переменная = Createobject(класс)
где объектная_переменная представляет собой любую переменную типa Object или Variant, а класс является классом создаваемого объекта. Аргумент класс состоит из двух частей, разделенных точкой:
Регистрационное_Имя.Объект
где Регистрационное_Имя - имя под которым программа зарегестрирована в системе, а Объект - тип создаваемого объекта. Для Excell тип объекта может принимать значения Application, Sheets и Charts, для Word - Basic.
Так следующий оператор запускает Excell и создает новую таблицу:
Set Xlsheet = createObject(«Excell.Sheet»)
Если Excell уже запущен и рабочая папка уже открыта, то оператор добавит новую таблицу к открытой рабочей папке. Если Excell не запущен, то оператор запускает Excell с новой рабочей папкой.
Следующий оператор запускает Word и возвращает объект, на который можно ссылаться как на Word Basic:
Set WordSheet = createObject(«Word.Basic»)
Примечание:
Поскольку программа Word не полностью OLE - согласованна, то ссылкой является Word Basic, а не конкретный документ. Word Basic встроен в Word средством программирования на . Большинство директив Word Basic доступны связанной программе. Эти директивы пересылаются программе Word как методы объекта Word Basic. Фактически Word интерпретирует эти директивы, применяя их к текущему документу как к объекту.
Метод GetObject открывает существующий объект. Метод имеет синтаксис:
Set объектная_переменная = GetObject(Имя_файла,класс)
где объектная_переменная и класс имеют те же значения что и для метода. Имя_файла - путь и имя файла для открытия объекта. Если расширение файла позволяет определить класс объекта, то аргумент класс можно опустить. Метод не запускает программу если она не запущена на момент выполнения метода.
Например следующий оператор открывает таблицу COST.XLS в директории PROJ диска D:
Set Xlsheet = GetObject(«D:\PROJ\COST.XLS», «Excell.Sheet»)
Примечание :
Экспериментируя с объектами OLE и программами, вы можете столкнуться с одной проблемой - разрушение системы. При проверке вашей новой программы вы будете сталкиваться с ее крахом до тех пор пока не устраните последнюю ошибку. Каждый из этих крахов будет оставлять связь, которая будет мешать корректной работе системы. В таком случае дальнейшая работа Windows будет невозможной и придется перегрузить Windows для устранения путаницы.
Примечание :
Поскольку связи OLE подвержены ошибкам, вы должны уметь определять, какая из процедур обработки ошибок необходима для предотвращения вашей программы из-за ошибок связи OLE. Процедура обработки ошибок может попробовать повторно установить связь или завершить процедуру - в зависимости от того, какая директива явилась причиной ошибки. Если вы попытаетесь установить связь повторно, то используйте счетчик, который позволит избежать зацикливания.
