Visual basic studio вставка объектов метод ole

Обновлено: 04.07.2024

При реализации обмена данными приложений данные/наборы данных могут представлять собой связанные или внедр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) ). Последовательность действий:

  1. создать объекты: текстовый файл (приложение Word), таблицу (приложение Excel), базу данных (приложение Access), рисунок (приложение Paint),
  2. создать на форме элемент управления OLE (Name = ole1), два переключателя (Name = opt1 и opt2 соответственно, Caption = Link и Embed cоответственно), командную кнопку (Name = cmd1, Caption = Load Object), поле списка (Name = lst), табл. 6.1.
  3. ввести код данный ниже, стартовать проект,
  4. маркировать в поле списка lst, элемент, например, "Docum.Word", сделать щелчок на требуемом переключателе (Link или Embedding), затем сделать щелчок на командной кнопке "Load Object". В поле элемента OLE выводится соответствующий файл,
  5. сделать двойной щелчок в поле OLE на введeнном объекте.

В зависимости от того, какой переключатель использован (Link или Embed), вставленный объект выводится или в приложении Word для редактирования, или появляется возможность редактировать его средствами того приложения, в котором он находится. В случае Link внесeнные (пользователем) изменения остаются в исходном файле. Это можно проверить, загрузив файл в приложение Word.

При разработке приложения, использующего данные в документе Office, может быть полезно иметь эти данные непосредственно в приложении Visual Basic, чтобы пользователь мог просматривать и редактировать данные без необходимости переключаться на приложение Office. Это можно сделать в Visual Basic с помощью элемента управления OLE Container.

В этой статье описывается динамическое создание и автоматизация документа Office с помощью элемента управления OLE Container.

Дополнительные сведения

Возможность вставки документа Office в Visual Basic осуществляется с помощью технологии технологии OLE и связывания и внедрения объектов Майкрософт. Технология OLE предназначена для того, чтобы позволить другому приложению размещать объект, принадлежащий другому приложению, так, чтобы он был удобным для конечного пользователя, но не требует от приложений знать внутренние сведения о другом. Visual Basic предоставляет элемент управления OLE Container, позволяющий программистам Visual Basic добавлять в форму объекты OLE.

После внедрения объекта большинство OLE-серверов поддерживают автоматизацию, чтобы ведущее приложение программно изменяет или манипулирует объектом из кода. Чтобы получить ссылку на объект Automation, используйте свойство Object контейнера OLE. Это свойство возвращает объект автоматизации, который точно соответствует внедренному элементу.

Создание приложения Visual Basic, в котором размещается книга Excel

Запустите Visual Basic и создайте новый стандартный проект. По умолчанию создается форма Form1.

На панели элементов управления добавьте три командные кнопки в форму Form1. Затем добавьте экземпляр элемента управления OLE Container. Когда элемент управления OLE Container размещается в форме, он запрашивает тип объекта, который вы хотите вставить. Для этого примера необходимо динамически добавить объект, поэтому нажмите кнопку Отмена, чтобы закрыть диалоговое окно без добавления объекта.

В окне кода для формы Form1 добавьте следующий код:

Создание приложения Visual Basic, в котором размещается документ Word

Запустите Visual Basic и создайте новый стандартный проект. По умолчанию создается форма Form1.

На панели элементов управления добавьте три командные кнопки в форму Form1. Затем добавьте экземпляр элемента управления OLE Container. Когда элемент управления OLE Container размещается в форме, он запрашивает тип объекта, который вы хотите вставить. Для этого примера необходимо динамически добавить объект, поэтому нажмите кнопку Отмена, чтобы закрыть диалоговое окно без добавления объекта.

В окне кода для формы Form1 добавьте следующий код:

Рекомендации по использованию OLE Container

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

Если вы привязку к файлу, объект невозможно активировать на месте. Вместо этого, когда пользователь дважды щелкает объект, объект открывается в окне серверного приложения. На месте можно активировать только внедренные объекты.

Элемент управления OLE Container связан с данными. Если у вас есть база данных Access 97 или Access 2000, вы можете привязывать элемент управления к полю объекта OLE в базе данных. При отображении формы данные извлекаются из базы данных и отображаются для редактирования пользователем. Любые изменения, внесенные пользователем, автоматически сохраняются в базе данных при закрытии объекта OLE.

Чтобы сделать привязанные данные элемента управления OLE Container, добавьте элемент управления данными Visual Basic и присвойте свойству DatabaseName путь к базе данных. Затем присвойте источнику записи существующую таблицу в базе данных. Используйте свойство DataSource элемента управления OLE, чтобы присоединить элемент управления к элементу управления данными Visual Basic, а затем задайте свойство DataObject, чтобы оно ссылалось на определенное поле в наборе записей, содержащее объект OLE. Visual Basic выполняет остальные функции.

Размер и положение заштрихованной границы, которая отображается, когда контейнер становится активным на месте, определяется размером объекта и параметрами, выбранными для элемента управления OLE. Эта граница отображается, чтобы пометить границы окна редактирования. Границы окна редактирования часто не совпадают с границами самого контейнера OLE; Такое поведение является нормальным для объекта OLE. Окно редактирования невозможно изменить программным способом с помощью Visual Basic.

Некоторые методы автоматизации могут работать неправильно, если объект не был активирован на месте. Чтобы программно активировать объект OLE, используйте метод Доверб и укажите Вболешов (-1) в качестве команды.

Чтобы определить, отображается ли меню связанного или внедренного объекта в форме контейнера, можно задать свойство формы Неготиатеменус. Если для свойства Неготиатеменус дочерней формы задано значение true, а в контейнере определена строка меню, меню объекта помещаются в строку меню контейнера при активации объекта. Если в контейнере нет строки меню или для свойства Неготиатеменус задано значение false, меню объекта не отображаются при его активации. Обратите внимание, что свойство Неготиатеменус не применяется к формам MDI, поэтому меню формы MDI невозможно объединить с активизированными объектами. Чтобы проиллюстрировать согласование меню, попробуйте выполнить указанные ниже действия с примером приложения, созданного в предыдущем разделе.

Visual Basic не позволяет управлять процессом слияния меню или вносить изменения в элементы меню сервера при добавлении. Однако вы можете изменить или изменить меню приложения Office с помощью автоматизации, используя код, аналогичный приведенному ниже:

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

Note (Примечание ) Эта точка маркера не относится к Microsoft Office Excel 2007 или Microsoft Office Word 2007.

Visual Basic в настоящее время не поддерживает назначение пространства панели инструментов. Таким образом, закрепленные панели инструментов обычно не отображаются при активации объекта. Тем не менее, можно отобразить плавающее окно инструментов с автоматизацией:

Note (Примечание ) Эта точка маркера не относится к Microsoft Office Excel 2007 или Microsoft Office Word 2007.

Для программ, требующих, чтобы объект оставался активным на месте постоянно, корпорация Майкрософт предоставила технологию ActiveX Documents. Не все серверы OLE являются серверами документов ActiveX; Microsoft Word, Microsoft Excel и Microsoft PowerPoint — это серверы документов ActiveX.

Visual Basic не поддерживает собственный элемент управления для размещения документов ActiveX. Однако элемент управления WebBrowser, поставляемый с Internet Explorer (версия 3,0 и более поздние версии), поддерживает такую форму включения на месте. Этот элемент управления можно использовать для открытия документа Office в виде документа ActiveX. Для получения дополнительных сведений об использовании элемента управления WebBrowser обратитесь к следующей статье:

243058 как использовать элемент управления WebBrowser для открытия документа Office

Метод SaveToFile контейнера OLE создает файл, который можно открыть в контейнере OLE. Однако файлы, сохраненные с помощью метода SaveToFile контейнера OLE, невозможно открыть непосредственно в соответствующем приложении Office. Если вы хотите сохранить внедренный документ на диске, чтобы документ можно было открыть в целевом приложении, используйте метод SaveAs документа приложения:

На форуме я уже задавал вопрос по поводу того, можно ли создать приложение на VB, в котором бы в верхней части окна отображалась таблица Эксель, а в нижней находился график Эксель, построенный на основе данных в электронной таблице. Один участник форума ответил мне, что это можно сделать, с помощью OLE.

Вчера я купил диск с VB (кстати, все работает, но только справка не вызывается, программа просит установки MSDN библиотеки; не знаю, что это такое; может, кто-нибудь знает, где найти нормальный диск с VB 6.0?), создал новое окно и вставил туда OLE объект 'лист Эксель'. Проблема одна: при запуске этого 'приложения' появляется окно, с таблицей Эксель, но только для ее редактирования надо сделать по ней двойной щелчок. Появляется после этого некрасивое окно поверх моей 'программы', появляется меню Экселя и все такое. Мне же нужно, чтобы в моем приложении была полноценная таблица Эксель, которая бы редактировалась сразу из приложения и чтобы никаких двойных щелчков делать не приходилось. В общем, идея, думаю, понятна.

Быть может, это невозможно, и мне придется сделать в моей программе какой-нибудь control в виде таблицы, куда будут вводиться данные. Можно ли будет сделать так, чтобы эти данные после ввода в таблицу переводились скрытно в лист Эксель, где проводились бы все расчеты, а затем на основе данных, сформированных в листе Эксель, строилась бы диаграмма, находящаяся в моей программе?

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

На этом форуме мне один человек сказал, что в Visual C++ 'есть доступ к памяти', и все работает быстрее. Так ли это?

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

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Cpp builder-Ole-Excel. WideString пишет в ячейку Excel минус перед нулем
Здравствуйте! Посмотрите пожалуйста: Когда аргумент val == 0, в ячейку Excel пишется "-0". Без.

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

Вставка OLE объекта в таблицу через форму
Ребята, подскажите, пожалуйста, как реализовать это? Нужно, чтобы на форме при клике на кнопку.

1. А зачем тебе нужна возможность редактировать таблицу Экселя откуда-то ещё кроме самогО Экселя?! Так ли уж это необходимо?

2. А почему бы не строить график средствами Экселя?! У него же очень солидные возможности на эту тему.

3. Передавать данные в Эксель из VB-приложения (в том числе - 'скрытно') несложно: поищи примеры кодов в Сети, а то объяснять здесь долго получится. Многие используют OLE-Automation Экселя для генерации отчётов и документов из своих программ.

4. MSDN - это у VB вместо обычного хелпа. С MS Visual Studio 6.0 (в состав которой входит VB 6.0) идут в комплекте 2 компакта с MSDN. Т.е. это поболее 1 гига будет.

При реализации обмена данными приложений данные/наборы данных могут представлять собой связанные или внедр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) ). Последовательность действий:

  1. создать объекты: текстовый файл (приложение Word), таблицу (приложение Excel), базу данных (приложение Access), рисунок (приложение Paint),
  2. создать на форме элемент управления OLE (Name = ole1), два переключателя (Name = opt1 и opt2 соответственно, Caption = Link и Embed cоответственно), командную кнопку (Name = cmd1, Caption = Load Object), поле списка (Name = lst), табл. 6.1.
  3. ввести код данный ниже, стартовать проект,
  4. маркировать в поле списка lst, элемент, например, "Docum.Word", сделать щелчок на требуемом переключателе (Link или Embedding), затем сделать щелчок на командной кнопке "Load Object". В поле элемента OLE выводится соответствующий файл,
  5. сделать двойной щелчок в поле OLE на введeнном объекте.

В зависимости от того, какой переключатель использован (Link или Embed), вставленный объект выводится или в приложении Word для редактирования, или появляется возможность редактировать его средствами того приложения, в котором он находится. В случае Link внесeнные (пользователем) изменения остаются в исходном файле. Это можно проверить, загрузив файл в приложение Word.

Читайте также: