Приложение данные из которого можно включить в ole
При реализации обмена данными приложений данные/наборы данных могут представлять собой связанные или внедрeнные объекты. Связывание (Link) используется, если нужно, чтобы при изменении данных в исходном файле данные в другом файле также изменялись. Внедрение используется, если нужно использовать конечный файл (на другом компьютере) и нежелательно изменение данных в нeм при изменении исходных данных
Связанный объект - это объект , созданный в одном файле и вставленный в другой файл с поддержкой связи между файлами; связанный объект не является частью файла, в который он вставлен. При обновлении исходного файла связанный объект автоматически обновляется.
Внедрeнный объект является частью файла, в который он вставлен. При двойном щелчке на связанном объекте он открывается в приложении, в котором он был создан; при двойном щелчке на внедрeнном объекте появляется возможность редактирования его средствами текущего приложения.
Элемент управления OLE
Элемент управления OLE (панель элементов управления) используется для связывания /внедрения объектов в приложениях Visual Basic. Контекстное меню OLE содержит команды:
- вырезать, копировать, вставить, удалить,
- перенести
- вставить объект (имеется список объектов для выбора и возможность выбора типа вставки),
- специальная вставка - при выборе этой команды выводится диалоговое окно, где отображаются имеющиеся в наличии классы объектов. Имеется возможность сделать выбор - связь/внедрение; имеется возможность использования вместо объекта пиктограммы,
- создать связь, создать внедренный объект.
Не все команды отображаются или являются доступными; это зависит от состояния приложения и буфера обмена. Некоторые параметры элемента управления OLE даны в табл. 6.1.
Приложение OLE-сервер определяет множество операций (команд), которые могут выполняться над поставляемым им объектом. Каждый объект поддерживает собственный набор команд. Этот набор может изменяться во время работы приложения. OLE-объект получает список команд от приложения-сервера и доступ к этому списку команд осуществляет через свои свойства ( AutoVerbMenu , Verb , ObjectVerbs , ObjectVerbsCount ). Эти свойства доступны во время выполнения.
Практическая работа 41. OLE
41а. Элементарная операция OLE
- Создать на форме элемент управления OLE для создания, например, связанного объекта ,
- создать соответствующий файл, например, A:\ole1.xls (см. код, данный ниже),
- ввести код, данный ниже,
- стартовать проект, сделать щелчок на форме, наблюдать результат.
41в. OLE
Рассматривается загрузка объектов (см. процедуру Form_Load () в OLE-контейнер и реализация (по желанию пользователя) связывания/внедрения (см. процедуру Public Sub LinkEmb(FileName As String, Embed As Boolean) ). Последовательность действий:
- создать объекты: текстовый файл (приложение Word), таблицу (приложение Excel), базу данных (приложение Access), рисунок (приложение Paint),
- создать на форме элемент управления OLE (Name = ole1), два переключателя (Name = opt1 и opt2 соответственно, Caption = Link и Embed cоответственно), командную кнопку (Name = cmd1, Caption = Load Object), поле списка (Name = lst), табл. 6.1.
- ввести код данный ниже, стартовать проект,
- маркировать в поле списка lst, элемент, например, "Docum.Word", сделать щелчок на требуемом переключателе (Link или Embedding), затем сделать щелчок на командной кнопке "Load Object". В поле элемента OLE выводится соответствующий файл,
- сделать двойной щелчок в поле OLE на введeнном объекте.
В зависимости от того, какой переключатель использован (Link или Embed), вставленный объект выводится или в приложении Word для редактирования, или появляется возможность редактировать его средствами того приложения, в котором он находится. В случае Link внесeнные (пользователем) изменения остаются в исходном файле. Это можно проверить, загрузив файл в приложение Word.
Автор:
Связывание и внедрение объектов позволяет использовать информацию из одного приложения в другом. Для использования технологии OLE необходимо, чтобы и исходное приложение, и целевое приложение поддерживали OLE.
И при связывании, и при внедрении производится вставка информации из одного документа в другой. Далее, в обоих случаях редактирование объекта производится в документе приложения-приемника. Однако результаты связывания и внедрения объектов отличаются друг от друга методом хранения информации.
По своей сути внедрение объектов и их связывание подобны вставке блоков и созданию внешних ссылок.
Внедрение объектов
При внедрении методом OLE в составном документе размещается копия внедренных данных. Эта копия теряет связь с исходным документом. Внедренные данные в составном документе могут редактироваться с помощью приложения, в котором они были созданы; но исходный документ при этом не изменяется. При внедрении объектов связь с исходным файлом не поддерживается. Внедрение следует применять, если модификация исходного документа при редактировании составного нежелательна.
Связывание объектов
При связывании методом OLE создается ссылка между документом сервера и составным документом. Связь является удобным способом использования одних и тех же данных в различных документах: если исходные данные модифицируются, для изменения составных документов требуется лишь обновление связей. Большинство приложений-приемников могут также быть настроены на автоматическое их обновление.
При установлении связи чертежа необходимо поддерживать доступ и к исходному приложению, и к документу. Если что-либо из них переименовано или перемещено, может потребоваться повторное задание связи.
Управление качеством представления OLE-объектов при печати
При использовании растрового устройства печати OLE-объекты рассматриваются как растровые. Так как крупные полноцветные растровые изображения с высоким разрешением весьма неэкономичны при печати, можно управлять выводом каждого объекта на печать с помощью системной переменной OLEQUALITY. По умолчанию она настроена на автоматический выбор, при этом значении качество печати задается в соответствии с типом объекта. Объем затраченных на печать времени и памяти напрямую зависит от заданного качества печати.
Качество печати объектов OLE может также настраиваться в редакторе параметров плоттера. При разворачивании параметра "Графика" появляется элемент "Растровая графика", в котором можно настроить качество печати OLE-объектов.
Чтобы это стало возможным, приложения должны предоставлять свои сервисы не только человеку, но и программам, т. е. они должны быть программируемыми. Обеспечение программируемости и является целью "Автоматизации" (технология OLE Automation). Приложение можно сделать программируемым, обеспечив доступ к его сервисам, через обычный СОМ-интерфейс.
Механизм OLE был задуман как технология интеграции программных продуктов Microsoft Office. Технология OLE предоставляет нам возможность работать с объектами, созданными в других приложениях (документы, рисунки, таблицы). Основные термины, с которыми оперирует данная технология, — это OLE-объект, сервер приложения и контейнер приложения.
OLE-объектом называют объект, созданный в другом приложении и сохранивший связь с этим приложением. Документ, редакции Word, или электронные таблицы в формате Excel — все они могут быть OLE-объектами, если будут вставлены в документ соответствующим образом. Если не вставлять их как OLE-объект, то связь с оригинальным приложением будет отсутствовать.
Контейнером приложения OLE называют приложение, в котором создается составной документ, позволяя обрабатывать его в исходном приложении (например, таком как Word или Excel), которое использовалось для создания этого объекта.
Сервером приложения OLE (OLE Server Application) называют приложение, создающее объекты, которые можно поместить в документ-контейнер.
Программы — "1С:Предприятие", Microsoft Word и Excel являются приложениями, которые могут выступать и как OLE-сервер, и как OLE-контейнер. Другими словами, эти приложения могут создавать новые OLE-объекты, а такжет хранить OLE-объекты, созданные в других приложениях.
С точки зрения пользователя, составной документ выглядит единым набором информации, но фактически содержит элементы, созданные двумя или несколькими разными приложениями.
Использование Automation сервера в версии 8.2
Система "1С:Предприятие 8.2" может использоваться внешними приложениями в качестве OLE Automation сервера.
Обычно в этих целях "1С:Предприятие" используют для управления конфигурациями системы программ "1С:Предприятие" из других приложений и выполнения действий аналогичным интерактивным действиям пользователя (например, построение отчетов).
Для запуска системы "1С:Предприятие" в качестве OLE Automation сервера из внешнего приложения выполняется следующая последовательность действий:
1. Создается OLE Объект с идентификатором "V82.Application".
2. Выполняется инициализация системы "1С:Предприятие" методом Connect .
3. Вызываются свойства и методы системы "1С:Предприятие" как OLE Automation сервера.
Приведем пример доступа к данным информационной базы посредством из Visual Basic скрипта
Некоторые версии внешних программ, в том числе и Visual Basic Script, обращающихся к программе "1С:Предприятие" посредством OLE Automation, могут неправильно интерпретировать русские идентификаторы объектов. По этому, для обращения к свойствам и методам агрегатных типов данных системы "1С:Предприятие" из внешних приложений рекомендуется использовать их англоязычные синонимы.
При работе в качестве OLE Automation сервера "1С:Предприятием предоставляет доступ ко всем свойствам и методам своего глобального контекста, а также позволяет включать и выключать пользовательский интерфейс (главное окно приложения). Поэтому объект OLE-сервер системы «1С:Предприятием» в качестве своих свойств может использовать: системные перечисления, значения констант, перечислений, справочников, документов и т. п., а также переменные, объявленные в модуле приложения с ключевым СЛОВОМ Экспорт.
Кроме того, OLE Automation сервер имеет одно дополнительное свойство и два метода с целью выполнения действий, специфичных для работы в режиме OLE Automation.
Единственное свойство visible имеет значение логического типа и позволяет управлять видимостью пользовательского интерфейса системы «1С:Предприятием». По умолчанию свойство имеет значение ложь.
Объект OLE-сервер системы "1С:Предприятие" в качестве своих методов может использовать системные процедуры и функции, а также процедуры и функции модуля приложения и общих модулей, объявленные с ключевым словом экспорт. Кроме того, OLE-сервер системы "1С:Предприятие" имеет два дополнительных метода: Connec t и NewObject .
Метод Connect выполняет инициализацию системы "1С:Предприятие" и имеет единственный параметр — строку, используемую для соединения с информационной базой. Метод возвращает Истина, если инициализация прошла успешно, или Ложь, если нет.
Существует два варианта подключения к OLE-серверу системы "1С:Предприятие", которые зависят от варианта использования информационной базы (файловый или клиент-серверный варианты). Приведем пример подключения файловой и клиент-серверной версии системы "1С:Предприятие"
Рассмотрим параметры подключения к базе данных в файловом варианте.
• File — указывает на каталог базы данных.
• usr — имя пользователя, под которым будет происходить авторизация.
• Pwd — пароль пользователя.
Для подключения к базе данных в клиент-серверном варианте используются четыре параметра.
• srvr — указывает имя сервера, на котором работает сервер приложений системы "1С:Предприятие";
• Ref — указывает имя базы данных на сервере приложений;
• usr — определяет имя пользователя, под которым будет происходить авторизация;
• Pwd — пароль пользователя.
Второй специальный метод OLE-сервера системы "1С:Предприятие" — NewObject , который создает объект агрегатного типа данных системы "1С:Предприятие" и возвращает ссылку на него. Единственный параметр метода — строковое выражение, значение которого содержит имя агрегатного типа данных, объявленного в конфигураторе.
Доступ к объектам базы данных
Mетод NewObject используется для создания объекта типа запрос.
Поскольку система "1С:Предприятие" может создавать и использовать OLE Automation серверы, то из системы "1С:Предприятие" можно обращаться к другим информационным базам.
Для создания объектов агрегатного типа используется метод NewObject , но для доступа к константам и перечислениям достаточно использовать свойства глобального контекста константы и перечисления сервера приложения.
Для доступа к справочникам и документам можно использовать метод NewObject . Однако можно использовать и свойства глобального контекста Справочники и Документы. После создания объекта справочника или документа к нему применимы все методы, касающиеся соответствующего объекта в среде "1С:Предприятие".
Доступ к документам производится так же, как и к справочникам.
В объектах OLE-базы данных можно использовать только ее же объекты. В примере, рассмотренном выше, для заполнения реквизита документа контрагент используется элемент справочника контрагенты той же OLE-базы. Это правило касается не только объектов агрегатных типов (справочников, документов, регистров и т. п.), но и универсальных коллекций значений, таких как массивы, структуры, списки значений и т.п.
Рассмотрим пример вывода курса доллара из регистра сведений.
Вызов пользовательских интерфейсов
В предыдущем примере показана возможность выборки данных с помощью запроса и вывода результатов запроса в основную базу. Эти же данные можно визуализировать и в базе данных, используемой в качестве OLE Automation сервера.
Для начала необходимо показать основное окно приложения с помощью свойства Visible , а затем можно вызывать стандартные операторы — сообщить, предупреждение, а также открывать формы объектов и формировать отчеты.
В приведенном примере последовательно выполняются следующие действия:
1. Соединение с базой данных.
2. Установка видимости главного окна приложения.
4. Открытие формы списка справочника контрагенты.
Доступ к метаданным
Для доступа к метаданным можно использовать свойство глобального контекста метаданные. Приведем пример вывода всех справочников и их реквизитов для конфигурации, используемой в качестве OLE Automation сервера
Использование СОМ-соединения в версии 8.2
Основная задача использования СОМ-соединения для конфигурации системы "1С:Предприятие 8.2" — это обеспечение надежного и быстрого программного доступа к объектам конфигурации из внешних приложений. Применение СОМ-соединения во многом похоже на использование OLE Automation сервера, но существуют и очень важные отличия. Приведем некоторые общесистемные отличия СОМ-соединения от OLE Automation.
При использовании СОМ-соединения:
• затрачиваются гораздо меньше системных ресурсов;
• происходит более быстрая установка соединения с базой данных;
• происходит более быстрое обращение к свойствам и методам объектов;
• полностью отсутствуют пользовательские интерфейсы.
Отличия в программном использовании СОМ-соединения можно определить следующим образом:
• отсутствует свойство Visible ;
• не работают все методы системы "1С:Предприятие", касающиеся визуализации объектов;
• недоступен модуль приложения, но при этом доступен модуль внешнего соединения;
• из общих модулей доступны только те, у которых установлено свойство Внешнее соединение;
• метод Connect возвращает объект соединения с базой данных (в OLE Automation метод возвращал значение логического типа, а доступ к базе данных происходил через объект, созданный с помощью идентификатора "V82.Application").
Приведем пример подключения к базе данных системы "1С:Предприятие 8.2" с помощью СОМ-соединения на языке Visual Basic Script .
С помощью объекта Excel.Application, предоставляемого OLE-сервером MS Excel, можно программно создавать электронные таблицы, а также использовать все функции MS Excel, предоставляемые пользователям.
Основным, в объектной модели Excel, является объект Application, содержащий коллекцию Workbooks объектов типа WorkBook . Каждый объект типа WorkBook содержит коллекцию объектов Worksheets типа Worksheet , коллекцию объектов Сharts типа Сhart и др. Манипуляция рабочими книгами, их листами, ячейками, диаграммами и др. осуществляется путем обращения к свойствам и методам этих объектов.
Для создания примеров использования Microsoft Excel можно использовать следующий код создания контроллера:
Создать новую рабочую книгу Excel можно, используя метод Add коллекции Workbooks объекта Application:
Для создания рабочей книги на основе шаблона следует указать его имя в качестве первого параметра метода Add :
В качестве первого параметра этого метода можно также использовать следующие константы:
• -4109 — рабочая книга состоит из листа с диаграммой;
• -4167 — рабочая книга состоит из листа с данными.
В этом случае рабочая книга будет содержать лист того типа, который задан указанной константой (график, обычный лист с данными и др.).
Для открытия уже существующего документа следует воспользоваться методом Open коллекции WorkBooks .
Отметим, что свойство ActiveWorkBook объекта Excel.Application указывает на текущую активную рабочую книгу среди одной или нескольких открытых. Помимо этого к рабочей книге можно обращаться по ее порядковому номеру. Например, ко второй открытой рабочей книге можно обратиться с помощью записи:
Сделать рабочую книгу активной можно с помощью метода Activate :
Следующее, чему следует научиться, — это сохранять рабочие книги в файлах.
Закрытие документа может быть осуществлено с помощью метода close:
Метод Сlose имеет несколько необязательных (в случае позднего связывания) параметров, влияющих на правила сохранения рабочей книги. Первый из параметров принимает значения истина или ложь и влияет на то, сохранять ли изменения, внесенные в рабочую книгу. Второй параметр — имя файла, в котором нужно сохранить рабочую книгу (если в нее были внесены изменения). Третий параметр также принимает значения истина или ложь и влияет на то, будет ли пересылаться документ следующему пользователю по электронной почте.
Просто сохранить рабочую книгу, не закрывая ее, можно с помощью метода Save или SaveAs :
Метод SaveAs имеет более десятка параметров, влияющих на то, как именно сохраняется документ (под каким именем, с паролем или без него, какова кодовая страница для содержащегося в ней текста и др.).
Закрыть среду Excel можно с помощью метода Quit объекта Excel .Application. В случае Excel этот метод параметров не имеет.
Вывод документа Excel на устройство печати можно осуществить с помощью метода PrintOut объекта WorkBook , например:
Если нужно изменить параметры печати, следует указать значения соответствующих параметров метода PrintOut (в случае Excel их восемь).
Обращение к листам рабочей книги производится с помощью коллекции WorkSheets объекта WorkBook . Каждый член этой коллекции представляет собой объект Worksheet . К члену этой коллекции можно обратиться по его порядковому номеру, например:
Приведенная выше запись иллюстрирует, как можно изменить имя листа рабочей книги.
К листу рабочей книги можно обратиться и по имени, например:
Обращение к отдельным ячейкам листа производится с помощью коллекции Cells объекта WorkSheet . Например, добавить данные в ячейку B1 можно следующим образом:
Здесь первая из координат ячейки указывает на номер строки, вторая — на номер столбца.
Добавление формул в ячейки производится аналогичным способом:
Очистить ячейку можно с помощью метода ClearContents .
Форматирование текста в ячейках производится с помощью свойств Font
и Interior объекта Cell и их свойств. Например, приведенный фрагмент кода, выводит текст в ячейке красным жирным шрифтом Courier размера 16 на желтом фоне.
Свойство Colorlndex может принимать числовые значения от 1 до 56. Ниже
приведены значения только основных цветов:
Обратиться к текущей ячейке можно с помощью свойства ActiveCell объекта Excel.Application, а узнать местоположение ячейки можно с помощью свойства Address объекта Cell , например:
Помимо обращения к отдельным ячейкам, можно манипулировать прямоугольными областями ячеек с помощью объекта Range. Объект Range также часто используется для копирования прямоугольных областей через буфер обмена.
Обратите внимание на то, что диапазон, куда копируются данные, предварительно выделяется с помощью метода Select .
Выгрузка метаданных в MS Excel
Рассмотрим пример выгрузки метаданных произвольной конфигурации системы "1С:Предприятие 8.2" в лист Microsoft Excel.
Основной недостаток данного примера в том, что все тексты ячеек не отформатированы и представлены одним цветом, что затрудняет чтение таблицы.
Ниже показан пример цветового оформления ячеек MS Excel и задание в них определенного шрифта.
В первой строке данного примера в переменную ячейка помещается ссылка на конкретную ячейку с координатами НомерСтроки и НомерКолонки . После этого через данную переменную устанавливается размер шрифта, цвет текста, ширина ячейки, границы, положение текста и т. д.
* Источник информации: Михайлов А. В. 1С:Предприятие 7.7/8.0: системное программирование.
Для создания объекта автоматизации можно использовать программный идентификатор OLE (иногда называемый ProgID). В следующих таблицах указаны программные идентификаторы OLE для ActiveX элементов управления, Office приложений и веб-компоненты Office.
Элементы ActiveX
Чтобы создать элементы ActiveX, перечисленные в следующей таблице, используйте соответствующий программный идентификатор OLE.
Для создания элемента управления | Используйте этот идентификатор |
---|---|
CheckBox | Forms.CheckBox.1 |
ComboBox | Forms.ComboBox.1 |
CommandButton | Forms.CommandButton.1 |
Frame | Forms.Frame.1 |
Image | Forms.Image.1 |
Label | Forms.Label.1 |
ListBox | Forms.ListBox.1 |
MultiPage | Forms.MultiPage.1 |
OptionButton | Forms.OptionButton.1 |
ScrollBar | Forms.ScrollBar.1 |
SpinButton | Forms.SpinButton.1 |
TabStrip | Forms.TabStrip.1 |
TextBox | Forms.TextBox.1 |
ToggleButton | Forms.ToggleButton.1 |
Access
Чтобы создать объекты Access, перечисленные в следующей таблице, используйте один из соответствующих программных идентификаторов OLE. Если используется идентификатор без суффикса номеров версии, создается объект в последней версии Access, доступной на компьютере, на котором запущен макрос.
Для создания объекта: | Используйте один из этих идентификаторов |
---|---|
Приложение | Access.Application |
CurrentData | Access.CodeData, Access.CurrentData |
CurrentProject | Access.CodeProject, Access.CurrentProject |
DefaultWebOptions | Access.DefaultWebOptions |
Excel
Чтобы создать Excel объектов, перечисленных в следующей таблице, используйте один из соответствующих программных идентификаторов OLE. Если используется идентификатор без суффикса номеров версии, создается объект в последней версии Excel, доступной на компьютере, где работает макрос.
Для создания объекта: | Используйте один из этих идентификаторов | Comments |
---|---|---|
Приложение | Excel.Application | |
Workbook | Excel.AddIn | |
Workbook | Excel.Chart | Возвращает книгу, содержащую два таблицы; один для диаграммы и один для его данных. Активным является лист диаграммы. |
Workbook | Excel.Sheet | Возвращает книгу с одним листом. |
Microsoft Graph
Чтобы создать объекты Graph, перечисленные в следующей таблице, используйте один из соответствующих программных идентификаторов OLE. Если используется идентификатор без суффикса номеров версии, создается объект в последней версии Graph, доступной на компьютере, где работает макрос.
Outlook
Чтобы создать объект Outlook в следующей таблице, используйте один из соответствующих программных идентификаторов OLE. Если используется идентификатор без суффикса номеров версии, создается объект в последней версии Outlook, доступной на компьютере, на котором работает макрос.
Для создания объекта: | Используйте один из этих идентификаторов |
---|---|
Приложение | Outlook.Application |
PowerPoint
Чтобы создать объект PowerPoint в следующей таблице, используйте один из соответствующих программных идентификаторов OLE. Если используется идентификатор без суффикса номеров версии, создается объект в последней версии PowerPoint, доступной на компьютере, на котором запущен макрос.
Для создания объекта: | Используйте один из этих идентификаторов |
---|---|
Приложение | PowerPoint.Application |
Чтобы создать объекты Word, перечисленные в следующей таблице, используйте один из соответствующих программных идентификаторов OLE. Если используется идентификатор без суффикса номеров версии, создается объект в последней версии Word, доступной на компьютере, где работает макрос.
Для создания объекта: | Используйте один из этих идентификаторов |
---|---|
Приложение | Word.Application |
Document | Word.Document, Word.Template |
Global | Word.Global |
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Читайте также: