Средства быстрой разработки прикладных программ☛Уроки программирования ✎ |
Создание клиента в Visual Basic (на примере программы-клиента, использующего MS Excel)
Для использования в программе Visual Basic средств автоматизации OLE необходимо добавить ссылку на библиотеку типов нужного компонента. В нашем случае надо добавить ссылку на библиотеку Microsoft Excel Object Library.
Затем необходимо объявить переменную объектного типа. Она будет играть роль интерфейса, с помощью которого Visual Basic сможет взаимодействовать с объектами автоматизации OLE. В качестве примера ниже приводится объявление объектной переменной с именем opExcel, которая имеет тип Object:
Public opExcel As Object
При откровении переменной можно (и это даже лучше) определить конкретный тип (класс) объекта. Например:
Public opExcel As Excel.Application
После объявления переменной надо создать объект того типа, который будет использоваться при помощи функций автоматизации OLE, и назначить его объектной переменной. Если надо создать объект MS Excel, то это реализуется с помощью оператора:
Set opExcel = CreateObject ("Excel.Application ")
Создается новый объект функцией CreateObject, а связывание объектной переменной opExcel с созданным объектом происходит с помощью ключевого слова Set. Параметр функции CreateObject - строка, определяющая тип создаваемого объекта.
Существенно, что функция CreateObject создает новый объект независимо от того, существует ли указанный объект или нет. Если программа Excel уже запущена, то вместо функции CreateObject следует применить функцию GetObject. С ее помощью переменной можно присвоить ссылку на существующий объект следующим образом:
Set opExcel = GetObject (, "Excel.Application ")
Функция GetObject имеет два параметра. Первый - это полный путь и имя файла, содержащего объект. Второй - строка, определяющая тип создаваемого объекта. Если первый параметр опущен, то присутствие второго - обязательна. В этом случае функция GetObject пытается связаться с соответствующим экземпляром объекта выполняется. Если нет активного объекта указанного типа, то возникает ошибка.
Когда в программе нужно создать только один экземпляр объекта-приложения, то, как правило, сначала вызывается функция GetObject и только если ее выполнение завершается неудачно, вызывается функция CreateObject. Это можно реализовать следующим образом:
Public opExcel As Excel.Application 'объявление переменной, которая доступна' во всех модулях
Public Function ДоступДоExcel () As Boolean
ДоступДоExcel = True
On Error Resume Next
Set opExcel = GetObject (, "Excel.Application ")
If opExcel Is Nothing Then
Set opExcel = CreateObject ("Excel.Application ")
End If
If opExcel Is Nothing Then ДоступДоExcel = False
End Function
После того как корневой объект (в приведенном выше примере это Excel.Application) создан, есть реальная возможность обращаться к методам и свойствам объектов, встроенные (вложенные) у него и которые он экспортирует.
Так, для создания новых рабочих книг, открытие существующих и закрытие их, используется объект-коллекция Workbooks. Например, команда
opExce.Workbooks.Add
добавит новую книгу в коллекцию Workbooks. Команда
opExce.Workbooks.Open "D: \ Галузинський \ Завдання1.xls"
откроет конкретную книгу, а команда
opExce.Workbooks ("Завдання1.xls").Close SaveChange: = False
закроет ее без сохранения внесенных изменений. Следующая команда закрывает активную рабочую книгу с сохранением внесенных изменений:
opExce.ActiveWorkbook.Close SaveChange: = True
Для ввода значений в клетки рабочего листа используется метод Range объекта Worksheet. Для определения диапазона клеток в рабочем листе можно указывать его адрес или имя (если оно было ему присвоено).
В следующем примере в коллекцию Workbooks добавляется новая рабочая книга, ее первом рабочем листа предоставляется имя Примеры, во все клетки диапазона А1: С2 записывается числовое значение 5, диапазона клеток В6: D12 предоставляется имя Количество, которое затем используется для занесения в каждую клетку этого диапазона числового значения 47. Все эти действия на экране не отображаются, поскольку только после присвоения свойству Visible значения True объект opExcel становится видимым.
Передать в Excel различные данные можно с помощью нескольких обращений в Excel, что, естественно, требует дополнительных затрат времени. С использованием массива это можно сделать за одно обращение:
Dim vЗамовлення (3, 4) As Variant
vЗамовлення (1, 1) = "Товар": vЗамовлення (1, 2) = "От"
vЗамовлення (1, 3) = "Цена": vЗамовлення (1, 4) = "Количество"
vЗамовлення (2, 1) = "Хлеб черный": vЗамовлення (2, 2) = "шт."
vЗамовлення (2, 3) = 0.95: vЗамовлення (2, 4) = 25
vЗамовлення (3, 1) = "Хлеб белый": vЗамовлення (3, 2) = "шт."
vЗамовлення (3, 3) = 1.24: vЗамовлення (3, 4) = 27
oАркуш.Range (Cells (2, 2), Cells (4, 5)).Value = vЗамовлення
При передаче данных в диапазон рабочего листа данные могут содержаться в переменной, имеющей тип, определенный пользователем. Но при передаче данных из диапазона клеток рабочего листа в переменную последняя всегда должна иметь тип Variant (Excel создаст массив, когда будет выполняться оператор присваивания):
Dim vДани As Variant
Dim vЕлМасиву As Variant
vДани = oАркуш.Range ("B2").CurrentRegion.Value
MsgBox vДани (1,1) 'Переменная vДани содержит массив!
For Each vЕлМасиву In vДани
Debug.Print vЕлМасиву
Next
С помощью Автоматики можно создавать, изменять или открывать существующие диаграммы Excel, используя коллекцию Chats. В приведенном фрагменте кода в рабочем листе выбирается строка клеток, заполненных данными (среди них находится и клетка F2), и на основе этих данных создается объемная гистограмма:
Dim oДиаграма As Chart
oАркуш.Range («F2»).CurrentRegion.Select
Set oДиаграма = oАркуш.Chats.Add
oДиаграма.Type = xl3DColumn 'тип диаграммы: 3D-гистограмма
Следующий код устанавливает ссылку на существующую диаграмму и изменяет ее тип:
Set oДиаграма = oАркуш.Chats (1)
oДиаграма.Type = xl3DColumn
С помощью Автоматики в Visual Basic можно выполнять процедуры, созданные в Excel. Для этого используется метод Run объекта Application. Предположим, что в открытой книге из предыдущих примеров является процедура-функция с именем Итог, которая вычисляет сумму значений диапазона клеток, адрес которого передается этой процедуре значением символьного параметра. Обратиться к ней с Visual Basic можно следующим образом:
MsgBox opExcel.Run "Сводка", "D5: F10"
Следует обратить внимание, что из кода на Visual Basic можно обращаться в некоторых стандартных функций рабочего листа Excel с помощью его свойства WorksheetFunction. Так, вместо функции пользователя Итог можно было использовать стандартную функцию Sum:
MsgBox opExcel.WorksheetFunction.Sum (Range ("D5: F10"))
Программирование в среде MS Office
Третья концепция ускорения процессов разработки программных средств базируется на реализации предложенной фирмой Microsoft методологии документно-ориентированного стиля работы пользователей.
Согласно этой методологии информационная система организации должна состоять из баз данных, хранилищ данных и узлов по обработке данных. Внутренние данные организации, а также данные, которые являются внешними по этой организации, должны быть легкодоступными в каждом узле, а в результате работы с данными должны создаваться видимые образы документов. Все документы должны легко перемещаться и быть доступными для коллективной работы. Характерной особенностью документно-ориентированного стиля работы является то, что документ трактуется не просто как хранилище определенной части структурированной информации, а как объект в объектно-ориентированном программировании - он сочетает в себе информацию различного типа вместе с определенными функциональными возможностями (методами) обработки ее.
По такому стилю работы информационная система не предстает перед пользователем в виде программной системы с определенными, присущими именно ей конкретными особенностями и правилами использования, которые необходимо усвоить и которых необходимо четко придерживаться, а воспринимается как система документов, каждый из которых в большинстве случаев может использоваться отдельно и именно так, как это требуется в конкретной ситуации. Технология работы пользователя в такой, по терминологии фирмы Microsoft, цифровой нервной системе (Digital Nervous System) остается очень похожей на привычную для большинства пользователей технологию работы с обычными текстовыми документами, требует минимального количества дополнительных навыков и потому относительно легко осваивается. Второй положительный момент заключается в том, что благодаря открытости информационной системы упрощается технология ее разработки. Разработка становится эволюционным (распределенным во времени) и в значительной мере сводится к более или менее автономного проектирования и внедрения отдельных документов.
Одна из ключевых ролей по обработке информации в этой системе электронного документооборота принадлежит пакету MS Office, который обеспечивает документно-ориентированный стиль работы, доступ к широкому спектру данных, коллективную работу в локальной сети, интрасети и в Internet.
С каждой новой версией пакета его возможности возрастают. Например, в MS Offic-2000 было добавлено программное обеспечение поставщика данных для средств OLAP (On-Line Analytical Processing), что позволяет создавать базы данных OLAP и работать (через MS Query и Excel) с ними: налаживать источники баз данных, создавать кубы OLAP из реляционных баз данных, сохранять файлы определения куба OLAP. Это повышает эффективность доступа к большим объемам внешних данных и дает возможность уменьшить время и усилия при аналитической обработке их.
Основу технологии автоматизации на базе MS Office составляет реализация двух ключевых принципов:
• представления программ пакета в виде унифицированной иерархической объектной модели на основе OLE Automation (MS Office представляет собой огромный набор (несколько сотен) унифицированных ActiveX-объектов, доступных любым другим внешним программам через механизм OLE Automation);
• использование для создания новых приложений на базе пакета MS Office единого внутреннего механизма программирования на основе Visual Basic for Applications (VBA).
VBA представляет собой среду программирования, встраиваемый в приложение и имеет очень мощную, объектно-ориентированный язык программирования, который является частью семейства Visual Basic, содержащий современные визуальные средства разработки программ. В состав этого семейства, кроме VBA, входят также система разработки Visual Basic (выпуски Learning, Professional и Enterprise) и Visual Basic Scripting Edition (VBScript). VBA может эффективно использоваться как конечными пользователями соответствующей прикладной программы, так и разработчиками новой программной продукции. Пользователи, применяющие программные продукты со встроенным VBA, получают все возможности Visual Basic для адаптации приложений к специфике своих конкретных потребностей, а разработчики получают все возможности Visual Basic для расширения функциональных возможностей готовых прик-ладных программ, сокращая тем самым цикл разработки новой программной продукции .
В целом, с точки зрения разработчика, можно выделить три основных варианта использования пакета MS Office:
• Программирование, с помощью которого выполняется как простая настройка интерфейса офисного применения, так и решение специальных задач.
• Использование готовых объектов MS Office для разработки новых приложений с реализацией компонентной технологии программирования.
• Использование MS Office как платформы для создания документов, которые фактически представляют собой новый вид интерактивных приложений, функционирующих в среде MS Office. Это означает, что программы MS Office за счет гибких средств настройки и внутреннего программирования не только могут легко адаптироваться к специфике работы конкретного пользователя, на основе их могут создаваться программы с новыми функциями. Иными словами, с помощью этих средств разработчик может предоставить офисным приложениям совершенно новую функциональность.
Благодаря таким возможностям пакет MS Office обеспечивает «полномасштабное» среда разработки. То есть среда, которая хорошо подходит как для решения небольших, относительно простых задач, так и для создания сложных корпоративных информационных систем. Причем понятие простой задачи благодаря имеющимся в пакете средствам автоматизации программирования значительно расширилось.
При построении современных пакетов прикладных программ используется объектный подход и поэтому каждая его программа рассматривается как совокупность объектов со своими свойствами, методами и событиями, а большинство классов, предоставляемых программой программисту, используются и при построении самой программы пакета. В результате в современных пакетах программ большую часть классов, входящих в совокупности библиотек пакета, составляют классы, предназначенные для построения его программ, их основы или каркаса. Согласно этому такие библиотеки называют каркасом приложения (FrameWork Application). Именно по такому принципу и построена MS Office. Для программиста это ни что иное, как обычная совокупность библиотек классов, составляющих каркас документов, которые могут создаваться в среде этого пакета. Задачей программиста, работающего в среде MS Office, является не создание программного проекта, а создание системы документов. Целью разработки становится не программа, а документ, в котором программный проект представляет собой лишь часть этого документа и не может существовать независимо от него.
Каждый раз, когда создается новый документ в любой программе MS Office, автоматически создается каркас этого документа - из всей совокупности библиотек по умолчанию отбираются те библиотеки, классы которых будут доступны в данном документе. Однако этот каркас можно изменить и добавить таким образом в документ новые свойства. Для этого в редакторе программного документа нужно выбрать команду Tools / References и в списке всех возможных библиотек включить те, которые отвечают потребностям и отключить те, которые не нужны. Создав документ с необходимым набором возможностей, можно сохранить в виде шаблона и в дальнейшем открывать новые документы на основе шаблона, уже не заботясь о том, какие библиотеки следует подключать.
Корневой объект Application каждой программы MS Office содержит коллекцию документов, что позволяет открывать в одной программе несколько документов и работать с ними. Однако совместная работа не ограничивается документами одного типа. Можно открывать документы различных типов и работать с ними, переходя от одного документа к другому. Причем, документы можно связывать между собой двумя способами: «по вызову» и «по ссылке».
Документы будут связаны по вызову, если в одном из них вызывается другой. Вызов документа означает его открытия, если он еще не был открыт, и его активизацию.
Документы будут связаны по ссылке, если проект одного из них ссылается на проект другого. Поскольку циклические ссылки не допускаются, то, как уже отмечалось, возможна лишь древовидная структура организации связей между проектами. Для того чтобы организовать ссылки по проекту Б на проект А, нужно:
• открыть оба документа;
• в редакторе проекта Аза помощью команды Tools / Project Properties придать этому проекту собственное имя (в поле Project Name вкладки General);
• выполнить в редакторе проекта Б команду Tools / References и в окне ссылок включить флажок с именем проекта А.
Для обмена информацией между документами помимо таких стандартных способов, как обращение к базам данных и файлов, можно воспользоваться еще и следующими:
- В стандартном модуле одного из проектов с помощью Public-переменных определяется информационный пул, содержащий глобальные данные, пригодные для совместного использования определенной совокупностью документов. Проекты, которым необходим доступ к этим данным, связываются по ссылке с проектом, содержащим этот информационный пул. Следует обратить внимание, что поскольку циклические ссылки между проектами не допускаются, то нельзя разместить часть данных в проекте А, а часть в проекте Б и сделать их доступными для обоих проектов. Допустима лишь древовидная структура организации связей между проектами и такая же структура хранения общей информации.
- Общая для определенных документов информация размещается в клетках выделенной для этого рабочей книги Excel. Этот способ основан на возможности непосредственного взаимодействия самих документов без связывания их проектов.
Продолжение статьи: ч.1 Продолжение статьи: ч.2 Продолжение статьи: ч.3 Продолжение статьи: ч.4 Продолжение статьи: ч.5
Другие материалы по теме:
- Классификация case-средств- Среда программирования. Интегрированные среды программирования
- Понятие языка программирования
- Среда программирования delfi 2.0
- Язык программирования Паскаль
