Excel как ole object

Содержание

  1. OLEObjects object (Excel)
  2. Remarks
  3. Example
  4. Methods
  5. Properties
  6. See also
  7. Support and feedback
  8. Using ActiveX Controls on Sheets
  9. Добавление элементов управления с помощью Visual Basic
  10. Использование свойств элемента управления с Visual Basic
  11. Использование имен элементов управления с коллекциями shapes и OLEObjects
  12. Поддержка и обратная связь
  13. OLEObjects.Add method (Excel)
  14. Syntax
  15. Parameters
  16. Return value
  17. Example
  18. Support and feedback
  19. Объект OLEObjects (Excel)
  20. Замечания
  21. Пример
  22. Методы
  23. Свойства
  24. См. также
  25. Поддержка и обратная связь

OLEObjects object (Excel)

A collection of all the OLEObject objects on the specified worksheet.

Each OLEObject object represents an ActiveX control or a linked or embedded OLE object.

An ActiveX control on a sheet has two names: the name of the shape that contains the control, which you can see in the Name box when you view the sheet, and the code name for the control, which you can see in the cell to the right of (Name) in the Properties window.

When you first add a control to a sheet, the shape name and code name match. However, if you change either the shape name or code name, the other is not automatically changed to match. The latter however, seems to have changed with Excel versions. With version 16.0 both are kept consistent and is not possible to change one of the two alone.

Example

Use the OLEObjects method of the Worksheet object to return the OLEObjects collection.

The following example hides all the OLE objects on worksheet one.

Use the Add method to create a new OLE object and add it to the OLEObjects collection. The following example creates a new OLE object representing the bitmap file Arcade.bmp and adds it to worksheet one.

The following example creates a new ActiveX control (a list box) and adds it to worksheet one.

You use the code name of a control in the names of its event procedures. However, when you return a control from the Shapes or OLEObjects collection for a sheet, you must use the shape name, not the code name, to refer to the control by name. For example, assume that you add a check box to a sheet and that both the default shape name and the default code name are CheckBox1. If you then change the control code name by typing chkFinished next to (Name) in the Properties window, you must use chkFinished in event procedures names, but you still have to use CheckBox1 to return the control from the Shapes or OLEObject collection, as shown in the following example.

Methods

Properties

See also

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

Using ActiveX Controls on Sheets

В этом разделе рассматриваются конкретные сведения об использовании элементов ActiveX на листах и листах диаграмм. Общие сведения о добавлении элементов управления и работе с ними см. в разделах Использование элементов ActiveX в документе и Создание настраиваемого диалогового окна.

При работе с элементами управления на листах учитывайте следующие моменты:

Помимо стандартных свойств, доступных для элементов ActiveX, с элементами ActiveX в Microsoft Excel можно использовать следующие свойства: BottomRightCell, LinkedCell, ListFillRange, Placement, PrintObject, TopLeftCell и ZOrder.

Эти свойства можно задать и вернуть с помощью имени элемента activeX. В следующем примере окно книги прокручивается, поэтому CommandButton1 находится в левом верхнем углу.

Некоторые методы и свойства Microsoft Excel Visual Basic отключаются при активации элемента ActiveX. Например, метод Sort нельзя использовать, когда элемент управления активен, поэтому следующий код завершается ошибкой в процедуре события нажатия кнопки (так как элемент управления по-прежнему активен после его щелчка пользователем).

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

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

При сохранении книги Microsoft Excel в формате файла книги Microsoft Excel 5.0/95 сведения об элементе управления ActiveX теряются.

Ключевое слово Me в процедуре события для элемента ActiveX на листе ссылается на лист, а не на элемент управления .

Добавление элементов управления с помощью Visual Basic

В Microsoft Excel элементы activeX представлены объектами OLEObject в коллекции OLEObjects (все объекты OLEObject также находятся в коллекции Shapes ). Чтобы программно добавить элемент ActiveX на лист, используйте метод Add коллекции OLEObjects . В следующем примере на лист 1 добавляется кнопка команды.

Использование свойств элемента управления с Visual Basic

Чаще всего код Visual Basic будет ссылаться на элементы ActiveX по имени. В следующем примере изменяется заголовок элемента управления с именем CommandButton1.

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

Чтобы изменить имя элемента управления, используемое в коде Visual Basic, выберите элемент управления и задайте свойство (Name) в окно свойств.

Так как элементы ActiveX также представлены объектами OLEObject в коллекции OLEObjects , можно задать свойства элемента управления с помощью объектов в коллекции. В следующем примере задается левое положение элемента управления с именем CommandButton1.

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

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

Использование имен элементов управления с коллекциями shapes и OLEObjects

Элемент ActiveX на листе имеет два имени: имя фигуры, содержащей элемент управления, которое отображается в поле Имя при просмотре листа, и кодового имени элемента управления, которое отображается в ячейке справа от (Имя) в окно свойств. При первом добавлении элемента управления на лист имя фигуры и код совпадают. Однако при изменении имени фигуры или кодового имени другое не будет автоматически изменено на соответствие.

Имя кода элемента управления используется в именах его процедур событий. Однако при возврате элемента управления из коллекции Shapes или OLEObjects для листа необходимо использовать имя фигуры, а не код, чтобы ссылаться на элемент управления по имени. Например, предположим, что вы добавили флажок на лист и что имя фигуры по умолчанию и код по умолчанию — CheckBox1. Если затем изменить имя кода элемента управления, введя chkFinished рядом с (Name) в окно свойств, необходимо использовать chkFinished в именах процедур событий, но вам все равно придется использовать CheckBox1 для возврата элемента управления из коллекции Shapes или OLEObject, как показано в следующем примере.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

OLEObjects.Add method (Excel)

Adds a new OLE object to a sheet.

Syntax

expression.Add (ClassType, FileName, Link, DisplayAsIcon, IconFileName, IconIndex, IconLabel, Left, Top, Width, Height)

expression A variable that represents an OLEObjects object.

Parameters

Name Required/Optional Data type Description
ClassType Optional Variant You must specify either ClassType or FileName. A string that contains the programmatic identifier for the object to be created. If ClassType is specified, FileName and Link are ignored.
FileName Optional Variant You must specify either ClassType or FileName. A string that specifies the file to be used to create the OLE object.
Link Optional Variant True to have the new OLE object based on FileName be linked to that file. If the object isn’t linked, the object is created as a copy of the file. The default value is False.
DisplayAsIcon Optional Variant True to display the new OLE object either as an icon or as its regular picture. If this argument is True, IconFileName and IconIndex can be used to specify an icon.
IconFileName Optional Variant A string that specifies the file that contains the icon to be displayed. This argument is used only if DisplayAsIcon is True. If this argument isn’t specified or the file contains no icons, the default icon for the OLE class is used.
IconIndex Optional Variant The number of the icon in the icon file. This is used only if DisplayAsIcon is True and IconFileName refers to a valid file that contains icons. If an icon with the given index number doesn’t exist in the file specified by IconFileName, the first icon in the file is used.
IconLabel Optional Variant A string that specifies a label to display beneath the icon. This is used only if DisplayAsIcon is True. If this argument is omitted or is an empty string («»), no caption is displayed.
Left Optional Variant The initial coordinates of the new object, in points, relative to the upper-left corner of cell A1 on a worksheet, or to the upper-left corner of a chart.
Top Optional Variant The initial coordinates of the new object, in points, relative to the top of row 1 on a worksheet, or to the top of the chart area on a chart.
Width Optional Variant The initial width of the new object, in points.
Height Optional Variant The initial height of the new object, in points.

Return value

An OLEObject object that represents the new OLE object.

Example

This example creates a new Microsoft Word OLE object on Sheet1.

This example adds a command button to sheet one.

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

Объект OLEObjects (Excel)

Коллекция всех объектов OLEObject на указанном листе.

Замечания

Каждый объект OLEObject представляет элемент управления ActiveX или связанный или внедренный объект OLE.

Элемент ActiveX на листе имеет два имени: имя фигуры, содержащей элемент управления, которое отображается в поле Имя при просмотре листа, и кодового имени элемента управления, которое отображается в ячейке справа от (Имя) в окно свойств.

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

Пример

Используйте метод OLEObjects объекта Worksheet , чтобы вернуть коллекцию OLEObjects .

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

Используйте метод Add , чтобы создать объект OLE и добавить его в коллекцию OLEObjects . В следующем примере создается новый объект OLE, представляющий точечный файл Arcade.bmp, и добавляет его на лист.

В следующем примере создается новый элемент ActiveX (поле списка) и он добавляется на первый лист.

Имя кода элемента управления используется в именах его процедур событий. Однако при возврате элемента управления из коллекции Shapes или OLEObjects для листа необходимо использовать имя фигуры, а не код, чтобы ссылаться на элемент управления по имени. Например, предположим, что вы добавили флажок на лист и что имя фигуры по умолчанию и код по умолчанию — CheckBox1. Если изменить имя кода элемента управления, введя chkFinished рядом с (Name) в окно свойств, необходимо использовать chkFinished в именах процедур событий, но по-прежнему необходимо использовать CheckBox1 для возврата элемента управления из коллекции Shapes или OLEObject, как показано в следующем примере.

Методы

Свойства

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

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

В одной из статей, посвященных работе с Excel в Delphi читатель с ником Kanti задал весьма не тривиальную задачку — как добраться до диаграммы Excel, внедренной в документ Word и работать с ней. За что Kanti большое человеческое спасибо — приятно, когда читатели интересуются жизнью блога и предлагают новые темы и идеи.
На первый взгляд задача довольно не простая. Однако решение для неё есть. Я пошел немного дальше в решении проблемы и сегодня расскажу вам:

  • как работать с объектом Excel, внедренном в документ Word
  • как работать с документом Word, внедренным в Excel.

План статьи:

  • Азы работы с MS Word в Delphi
  • Как работать с объектом Excel, внедренном в документ Word
  • Как работать с документом Word, внедренным в Excel

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

1. Азы работы с MS Word в Delphi

Запуск MS Word в принципе ни чем не отличается от запуска MS Excel за одним небольшим исключением — меняется параметр функции CreateOLEObject:

MyWord:=CreateOleObject('Word.Application');

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

Для того, чтобы подключиться к уже запущенному приложению достаточно использовать функцию GetActiveOleObject, единственным параметром которой является имя класса. Например, чтобы подключиться к запущенному приложению MS Word необходмо выполнить:

MyExcel:=GetActiveOleObject('Word.Application')

Соответственно, чтобы не гадать запущена или не запущена та или иная программа пакета MS Office достаточно воспользоваться связкой двух функций:

try
  MyWord:=GetActiveOleObject('WordApplication');
except
  MyWord:=CreateOleObject('Word.Application');
end;

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

MyWord.Documents.Open('myword.doc');

После того как документ открыт, Вы можете его редактировать, изменять текст, параметры страницы и т.д., но сегодня нам это не важно. Главное сегодня — научиться работать с объектами. И с этого момента начинается решение первой задачи.

2. Как работать с объектом Excel, внедренном в документ Word

Каждый документ Word имеет коллекцию Shapes, которая позволяет добавлять в документ объекты, созданные и отображаемые с помощью программ-серверов OLE (OLE-серверов). OLE-объекты в документах Word могут отображаться также, как они отображаются в приложениях, предназначенных для их создания и редактирования. Все наверно пользовались редактором формул Math Type? Вот вам простой OLE-сервер. Добавляете OLE-объект формулы  в документ — открывается окно Math Type где вы вводите то, что хотите увидеть и потом формула отображается в документе Word.

Другое дело, когда Вы пробуете вставить в документ Word, например файл mp3. В этом случае объект будет отображен в документе в виде ярлыка, но, тем не менее будет внесен в коллекцию Shapes и до него можно будет добраться из Delphi.

insert_objectТеперь попробуем посмотреть как выглядит добавление OLE-объектов. В простейшем случае Вы открываете Word, создаете документ и выбираете «Правка — Вставить — Объект» и перед Вами открывается окно с перечнем всех OLE-объектов, которые Вы можете использовать в документе. Выбираете объект, вставляете в документ — работаете. Обратите внимание на рисунок — в окне на рисунке как раз отображены всевозможные объекты нашего с Вами исследования.

Для того, чтобы вставить OLE-объект в документ Word из Delphi необходимо воспользоваться методом AddOleObject коллекции Shapes, который имеет следующий вид:

Shapes.AddOleObject(ClassType, FileName, LinkToFile, DisplayAsIcon, IconFileName, IconIndex, IconLabel, Range)

ClassType — имя, используемое для включения указанного объекта OLE. Например, чтобы вставить в документ Word диаграмму Excel следует использовать

для добавления листа Excel, соответственно:

и так далее. В принципе ничего сложного нет — вставить можно, что угодно, хоть exe-файл :)

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

LinkToFile True для того, чтобы связать OLE-объект с файлом, из которого он был создан. False, чтобы сделать объект OLE-объект независимым от копии файла, т.е. включить объект в документ Word. Если Вы определили значение для ClassType, аргумент LinkToFile должны быть ложными. Значение по умолчанию False.

DisplayAsIcon True для отображения объекта OLE в виде значка. Значение по умолчанию False.

IconFileName — Файл, который содержит значок для отображения объекта OLE.

IconIndex -индекс иконки отображения из IconFileName. Значение по умолчанию — ноль.

IconLabel — подпись к иконке объекта.

Range — диапазон,  где объект OLE будет размещен в тексте. Объект OLE заменяет выбранный диапазон. Если этот аргумент опущен, объект вставляется автоматически (в текущую позицию курсора в документе).

Давайте теперь продемонстрируем использование этого метода на практике и, заодно, приготовим плацдарм для дальнейшей работы. Рассмотрим как можно вставить чистый лист Excel в документ Word. Причем вставим лист в нужные нам координаты и зададим ему (листу) длину и ширину:

var MyWord: OLEVariant;
  begin
    MyWord:=CreateOleObject('Word.Application');  
    MyWord.Visible:=true;
    MyWord.Documents.Open(doc);
    MyWord.ActiveDocument.Shapes.AddOLEObject(ClassType:='Excel.Sheet',Left:=10, Top:=10, Width:=400, Height:=300);
  end;

Как видите, вместо того, чтобы указать объект Range мы просто расписали его параметры Left, Top, Width и Height. После выполнения этих операций в документе doc аккурат в верху страницы вставиться лист Excel.

Теперь, когда лист вставлен, можно приступать к дальнейшему изучению «глубин» OLE-серверов Microsoft.

Создадим новую переменную, в которой будем хранить ссылку на OLE-объект.

и сразу получим ссылку на наш лист Excel в Word’е:

MyOLE:=MyWord.ActiveDocument.Shapes.Item(1);

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

Представим себе, что мы ничего абсолютно не знаем про то, что лежит в MyOLE. Знаем только то, что это элемент из коллекции Shapes и все. Как определить, что мы получили ссылку именно на объект Excel, а не на автофигуру или, ещё хуже, не на файл mp3?

Для того, чтобы получить всю необходимую информацию об OLE-объекте достаточно обратиться к объекту MS Word под названием OLEFormat.

OLEFormat имеет следующие свойства:

Свойство Описание
Application Возвращает имя приложения к которому относится объект. В нашем случае вернет «Microsoft Word»
ClassType Возвращает или устанавливает тип класса для указанного объекта OLE, фотографии или поля.
Creator Возвращает 32-битное целое число, которое указывает на приложение в котором был создан объект.
DisplayAsIcon True, если указанный объект отображается в виде значка. Свойство для чтения/записи
IconIndex Возвращает или устанавливает индекс иконки, используемой если DisplayAsIcon True.
IconLabel Возвращает или устанавливает подпись к иконке OLE-объекта.
IconName Возвращает или устанавливает файл программы, в которой хранится икона для объекта OLE.
IconPath Возвращает путь к файлу, в котором хранится иконка для объекта OLE
Label Возвращает строку, которая используется, чтобы определить часть исходного файла для связывания объектов
Object Возвращает объект, который представляет собой объект верхнего уровня интерфейса указанного объекта OLE
Parent Возвращает объект, который представляет собой родительский объект указанного объекта OLEFormat
ProgID Возвращает программный идентификатор (ProgID) для указанного объекта OLE.

Теперь, используя эти свойства, попробуем получить всю необходимую нам информацию об OLE-объекте.

Вызовем последовательно свойства ClassType и ProgID:

ShowMessage(MyOle.OLEFormat.ClassType);
ShowMessage(MyOle.OLEFormat.ProgID);

В моем случае, результатом выполнения операций были две одинаковых строки «Excel.Sheet.12» Так как у меня установлен Office 2007 то версия 12, что и отразилось в сообщениях. У Вас это могут быть 10, 11 или как у меня 12 версии. С помощью номера версии можно будет определять — возможно ли в принципе изменять такие объекты на машине пользователя или нет.

Идем дальше. Итак, мы определили, что объект представляет собой лист Excel. Как получить доступ к Excel? И причем сделать это так, чтобы можно было наш OLE-объект изменить?

Обратимся к свойству Object. Согласно описанию, свойство должно вернуть нам ссылку на объект верхнего уровня. Следовательно, применительно к нашей ситуации — это будет ссылка на объект Excel. Чтобы убедиться в сказанном, сделаем так:

ShowMessage(MyOle.OLEFormat.Object.Application.Name);

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

Ну, а теперь развязка вопроса — используя ссылку на Excel попробуем написать что-нибудь на листе, например, избитую фразу «Hello World!»:

MyOle.OLEFormat.Object.Application.ActiveSheet.Range['A1'].Value:='Hello World!';

Можете проверить — в ячейку А1 запишется строка. Здесь следует обратить внимание на то, что при записи в Excel мы не использовали свойства ActiveWorkBook, которое обычно предшествует свойству ActiveSheet. Все дело в том, что среди объектов OLE Office нет такого OLE-объекта — вставляется только лист либо диаграмма. По сути диаграмма — это два листа Sheet где на одном находится сам график, а на втором — данные к нему.

Вот таким простым и достаточно понятным способом можно добавлять, изменять и удалять OLE-объекты. Кстати, на досуге можете потренироваться вставлять, активировать, редактировать сразу несколько различных OLE-объектов — принцип работы тот же. Получаете Object и используете его функции.

3. Как работать с документом Word, внедренным в Excel.

Надо сказать, что разработчики в Microsoft весьма неплохо потрудились, чтобы запутать бедных разработчиков :).  В начале все просто — как в Word. Есть Shapes у которого в свою очередь есть метод AddOLEObject, с практически теме же параметрами.

Далее, по логике вещей, у Shapes должно быть свойство-объект OLEFormat. Проверяем — действительно есть, но…свойства другие, точнее одно из свойств другое, а большинства вообще нет. Но, мы люди не гордые — будем управляться с тем, что есть:

Свойство Описание
Application При использовании без классификатора объектов, это свойство возвращает объект приложения, представляющий приложение Microsoft Excel.
При использовании с объектом Qualifier, это свойство возвращает объект приложения, которое использовалось для создания объекта
Object Возвращает OLE Automation объект ассоциированный с OLE объектом
Parent Возвращает объект, который представляет собой родительский объект указанного объекта OLEFormat
progID Возвращает программный идентификатор (ProgID) для указанного объекта OLE.

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

За что следует, наверное, сказать спасибо разработчикам Excel, так это за то, что они предусмотрели сразу объект OLEObjects предоставляющий нам в распоряжение все OLE-объекты листа. Используя этот объект мы минуем использование Shapes. Например так:

MyExcel.ActiveWorkBook.ActiveWorkSheet.OLEObjects.Count

Мы получаем число OLE-объектов документа.

MyExcel.ActiveWorkBook.ActiveWorkSheet.OLEObjects(1)

соответственно даст доступ к первому из OLE-объектов документа, а уж с ним-то нам и предстоит работать. Итак, рассмотрим следующую задачку: необходимо вставить в документ Excel пустой документ Word и написать в нем любую строку.

Чтобы не повторяться в применениях метода — вставим в Excel уже готовый документ Word из файла:

...
 
MyExcel.ActiveWorkBook.ActiveSheet.OLEObjects.Add(FileName:=doc, Left:=10, Top:=10, Width:=300, Height:=300);
MyOLE:=MyExcel.ActiveWorkBook.ActiveSheet.OLEObjects.item(1);
MyOLE.Activate;
ShowMessage(MyOle.ProgID); //убедимся, что объект относится к Word
ShowMessage(MyOle.Object.Application.Name); //запросим имя приложения
MyOle.Object.Application.ActiveDocument.Range.InsertAfter('Привет');
....

Обратите внимание, в данном случае мы использовали для работы с OLE-объектом не Shapes, а OLEObjects. Попробуйте воспроизвести те же самые действия как в случае работы с Excel из Word, т.е. воспользоваться свойством Object у объекта ObjectFormat. Думаю Вы будите «приятно» удивлены, т.к. в результате запроса имени приложения Вам вернется не Word как ожидалось, а Excel — следовательно работать с OLE-объектом становится невозможно.

Также следует отметить, что прежде, чем приступать к редактированию OLE-объекта, следует его предварительно активировать.

Вот так можно работать с Excel из Word и с Word из Excel и при этом не выходить из Delphi :). Ну, а для чего это использовать — решать Вам. Я только показал Вам возможности работы в Delphi с программами Word и Excel.

Книжная полка

Название:Разработка приложений Microsoft Office 2007 в Delphi

Описание Описаны общие подходы к программированию приложений MS Office. Даны программные методы реализации функций MS Excel, MS Word, MS Access и MS Outlook в среде Delphi.

купить книгу delphi на ЛитРес

0
0
голоса

Рейтинг статьи

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

Вставка таблицы из Excel в AutoCAD – довольно актуальная задача, если принять во внимание, что часто на листе с разработанным чертежом приходится размещать и сопроводительную спецификацию.
Как вставить таблицу из Excel в AutoCAD

Собственно, AutoCAD имеет и свои инструменты создания таблиц: как черчения – для линий, так и текстовые для наполнения.

Но если:

  • необходимо обеспечить в будущем оперативное изменение таблиц более специализированными инструментами, которые в самой популярной программе инженерного проектирования просто отсутствуют;
  • таблицы содержат расчёты, которые в будущем могут корректироваться;
  • хочется предоставить возможность влиять на процесс сопровождения разработки лицам, не владеющим или не имеющим на компьютере AutoCAD –

тогда решение задачи, как вставить таблицу из Excel в AutoCAD, может очень помочь в работе.

Разработчику необходимо только себе чётко представлять назначение двух режимов работы Автокада – «Модели» и «Листа». Первый, по замыслу разработчиков системы, служит именно для проектирования – черчения. Второй – для подготовки чертежа к печати. Очевидно, что сопроводительные таблицы относятся к справочной информации, которая нужна только при печати, поэтому и место таким объектам только в режиме «Листа». Не стоит вставлять таблицы в Автокад в «Модели» – это искажает всю идею работы приложения (некоторые даже умудряются в «Модели» и рамки делать, и писать комментарий).

Операция вставки – алгоритм по шагам

Обращаем внимание, что рассматриваемое взаимодействие обеспечивает технология объектного связывания – OLE (некоторые приложения называют её ActiveX – активного взаимодействия). Данная технология давно применяется при связи результатов работы всех приложений, входящих в пакет Microsoft Office. Но дело в том, что не все приложения вне «Офиса» поддерживают эту технологию. Возможно, в вашем распоряжении такая версия Автокада, что она эту технологию и не поддерживает. Тогда вывод может быть только один – ставить другую, более новую версию (ну, или пользоваться тем, что предоставляет ваша версия, для черчения вполне подходящая).

Кроме того, работа по OLE-технологии при решении вопроса, как вставить таблицу Эксель в AutoCAD, немного отличается от выполнения той же задачи, например, в связке Excel – Word (или, например, PowerPoint).

Там, мы сначала создаём таблицу в Excel, а затем уже проводим её «специальную» вставку в Word. Работа в связке Autocad-Excel немного другая.

Здесь:

  1. Находясь в режиме «Листа» Автокада, идём в меню Insert/OLE Object («Вставка»/«OLE-объект»).

    Вставка OLE-объекта в Автокаде

    Вставка OLE-объекта в Автокаде

  2. В открывшемся окне выбираем переключатель «Создать новый» и в соседнем списке справа – «Лист Microsoft Office Excel» (возможно, в этом списке будет ещё вариант – «Лист Microsoft Office Excel 97-2003», это если вы умудрились поставить на свой комп несколько версий «Офисов»).

    Вставка объекта в Автокаде

    Вставка объекта в Автокаде

  3. Если этот табличный процессор есть на ПК, система его запускает и перебрасывает нас в работу с листом таблицы – заметьте, макет таблицы уже появился в Автокаде.
  4. Теперь можно создать необходимое в Экселе.
  5. При закрытии листа – выходе из программы, результат работы будет вставлен в Автокад. Собственно, вставка производится уже при входе в Excel, но таблица, само собой, пока пустая. При переносе таблицы сохраняется всё назначенное форматирование.

Замечаем некоторые нюансы.

Во-первых, сразу после выхода из таблицы на экране появляется окно настройки созданного объекта – его размер, масштаб, качество при печати (это снова к разговору о назначении режимов Автокада). Обычно данные настройки оставляют такими, какие они предлагаются по умолчанию, тем более что в будущем их можно оперативно изменить. Если нет необходимости, чтобы данное окно свойств появлялось постоянно, то можно сбросить переключатель вывода данного окна (он в его нижней части).

Во-вторых, если перед вставкой не был определён видовой экран, который должен содержать таблицу, то вставка произойдёт в верхний левый угол окна режима, в противном случае – в верхний левый угол видового экрана. Но в любом случае таблицу в будущем можно переместить в нужное место листа.

В-третьих. Не забудем, что это разные вещи – белый цвет заливки и цвет заливки по умолчанию. Изначально в Excel таблицы не имеют заливки своих ячеек – просто отсутствие заливки здесь визуально совпадает с белым цветом. Такое отсутствие заливки в Автокаде превращается в заливку по умолчанию, которая имеет чёрный цвет. Поэтому, если не предпринять никаких действий в табличном процессоре, вставленная таблица будет чёрной, что, вероятно, очень далеко от необходимости. Отсюда вывод – ещё в Excel таблицу нужно будет «залить» цветом, близким к белому (заливка белым ни к чему не приводит) и обеспечить, само собой, вывод линий ячеек.

Но мало того, что таблица будет «чёрной», вы не увидите в ней и никакой информации, так как чёрный цвет содержимого в Экселе помещается на чёрный фон ячеек в Автокаде: чёрный по чёрному, вот и получается «пустота» – давний приём компьютерных дизайнеров. То, что во вставленной таблице что-то есть, вы почувствуете, перейдя в Excel – там таблица отразится так, как надо.

В будущем при двойном щелчке мышкой на такой таблице в Автокаде произойдёт вызов Экселя и переброс в него для редактирования самой таблицы – производимые изменения при выходе отразятся на листе чертежа.

Советуем быть очень аккуратными при изменении размеров таблицы. Не забудем, что её визуальное представление даже в процессоре – это совсем не то, что мы получим при печати. Даже в Excel печать необходимо настраивать, что уж говорить об Автокаде – есть большая вероятность, что ваша таблица просто не поместится не только в выбранный для неё видовой экран, но и на лист в целом, придётся заняться масштабированием.

Замечаем ещё один нюанс – хоть вставка и производится в режиме «Листа», она отражается и в «Модели», что совершенно неприемлемо с точки зрения разработчика – таблица перекрывает сам чертёж. Поэтому вывод один – сначала в «Модели» организуйте специальный слой для размещения таблицы. Этот слой можно будет визуально отключать, чтобы он не загораживал сам чертёж (подобное поведение, кстати, согласуется с самой идеей применения слоёв).

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

В этой ситуации при вставке после выбора «Insert»/«OLE-object» нужно выбрать переключатель «Вставка из файла». При нажатии на «ОК» появится стандартный запрос имени файла – окно выбора из содержимого жёсткого диска. Такая вставка уже не вызывает переход к самому Экселю – это удобно, когда его на самом деле пока на компьютере и нет.

При вставке через файл очень полезно установить ещё один «тонкий» переключатель – «Связать с файлом», он обеспечит более «продвинутую» работу. Теперь, изменяя этот файл таблицы в Экселе, вам не нужно заботиться о запуске Автокада – все изменения последний воспримет сразу после запуска и обновления внешних связей.

Имеем в виду и ещё одну небольшую особенность: для Автокада обычное дело – быстрое удаление объектов простым нажатием на клавишу DEL. Но данная возможность не работает с OLE-объектами, их удаляем – вырезаем уже через буфер обмена.

Таблица как гиперссылка

Есть и ещё один способ обеспечить в Автокаде вставку таблицы из Экселя – в качестве гиперссылки любого чертёжного объекта, обычно текстового. Здесь поступаем следующим образом:

  1. Выбираем объект.
  2. Идём в меню «Insert»/«Hyperlink» («Вставка»/«Гиперссылка»).

    Вставка таблицы как гиперссылки в Автокаде

    Вставка таблицы как гиперссылки в Автокаде

  3. В открывшемся окне с помощью кнопки «Файл» и следующего окна выбираем нужный файл.
  4. Выходим, присваивая объекту гиперссылку при нажатии на «ОК».

Теперь, когда мышка будет заходить на этот объект, она будет сопровождаться ещё и характерным значком гиперссылки с её адресом. Доступ к такому внешнему файлу будет возможен через контекстное меню объекта при выборе команды «Hyperlinks» – все гиперссылки (а их может быть у одного объекта несколько) будут приведены в выводимом рядом окне.

Другие варианты вставки

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

  1. Переходим на вкладку «Вставка» на панели «Связывание и извлечение».
  2. Выбираем команду «Связь с данными».
  3. Выбираем таблицу Excel в открывшемся окне.

Можно воспользоваться и вкладкой «Аннотации»:

  1. Здесь напрямую выбираем команду «Таблица».
  2. Следом в окне «Вставка таблицы» указываем параметры вставки объекта «На основе связи с данными».

    Параметры вставки таблицы в Автокаде

    Параметры вставки таблицы в Автокаде

  3. При выборе любого способа экспорта из Экселя в Автокад будет открыто диалоговое окно «Диспетчер связей данных», в котором и нужно будет указать «Создать новую связь с данными Excel».
    Создать новую связь с данными Excel в Автокаде
  4. На следующем этапе вводим имя связи (желательно осмысленное, точно отражающее суть).

    Ввод имени связи с данными в Автокаде

    Ввод имени связи с данными в Автокаде

  5. Затем выбираем внешний файл (можно указать даже диапазон необходимых рабочих ячеек таблицы).
  6. При выходе из данного окна по «ОК» в окне «Диспетчера связей данных» отражается список всех связей чертежа. Если выбрать необходимую связь, соответствующая таблица будет отражена в виде миниатюры в поле ниже.

    Выбор связи данных в Автокаде

    Выбор связи данных в Автокаде

  7. Выходим из «Диспетчера связей» по кнопке «ОК».
  8. В Автокаде появляется необходимая таблица.

Обращаем внимание на то, что Автокад может предлагать ещё две полезные команды для работы с таблицами:

  • «Загрузить из источника» – позволяет обновить информацию в таблице Автокада из ранее связанной с ней и изменённой таблицы Экселя.
  • «Выгрузить в исходный файл» – обновление данных уже в файле Excel после изменения информации в таблице из AutoCAD.

Если в вашем распоряжении версия Автокада, поддерживающая OLE-технологию, то вы без труда сможете повысить уровень своей проектировочной работы, обеспечивая проведение всех расчётов во внешней Excel таблице. Дальше работа уже будет зависеть от уровня поддержки Автокадом OLE и от наличия на ПК самого Экселя, само собой.

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

Чтение данных из Excel

Несмотря на то что в Oracle есть свой построитель отчетов, иногда возникает потребность в нерегламентированных отчетах, то есть в тех отчетах, которые были не предусмотрены в ходе проектирования системы. Существует необходимость в загрузке данных из различных внешних источников, что обусловлено многообразием форм представления и хранения данных. Каждая среда разработки предоставляет различные интерфейсы экспорта и импорта данных; Oracle Forms, в свою очередь, поддерживает достаточно много технологий для осуществления загрузки и выгрузки данных из внешних источников.

В этой главе мы рассмотрим возможные способы экспорта и импорта данных между приложениями Excel и Oracle Forms с помощью пакета . В конце главы будет приведен пример экспорта и импорта данных с помощью технологии .

Oracle Objects for OLE (OO4O)

Oracle Objects for OLE ( OO4O ) — это разработанный компанией Oracle набор СОМ-компонентов, совместимых с OLE Automation, который позволяет работать с Oracle из клиентских приложений с использованием скриптовых языков. Этот метод лучше подходит для работы с Oracle, чем Microsoft Open Database Connectivity (ODBC), к тому же OO4O предоставляют полную поддержку PL/SQL. Oracle Objects состоят из трех компонент:

  • OLE 2.0 Automation (InProcess) Server — эта компонента предоставляет интерфейс OLE Automation для приложений, поддерживающих OLE automation scripting (например, Visual Basic).
  • Oracle Data Control — управляющий элемент для Visual Basic.
  • Two C++ Class Libraries — C-библиотеки для Microsoft Foundation Classes (MFC) и Borland (OWL).

Особенно хорошо то, что вы можете использовать OO4O из любых приложений MS Office, применяющих VB-подобный язык макросов.

Ниже приведен простой пример создания соединения с базой данных Oracle на Visual Basic:

Sub Form_Load () 
 Dim OraSession As Object    'Declare variables as OLE Objects 
 Dim OraDatabase As Object 
 Dim OraDynaset As Object
 Set OraSession = CreateObject("OracleInProcServer.XOraSession")
 Set OraDatabase = OraSession.DbOpenDatabase("SQL*Net_Connect_
 String", "scott/tiger", 0&)
 MsgBox "Connected to " & OraDatabase.Connect & "@" &  OraDatabase.DatabaseName
 'Create the OraDynaset Object and display the first value 
 Set OraDynaset = OraDatabase.DbCreateDynaset("select empno, ename from emp", 0&)
 MsgBox "Employee " & OraDynaset.Fields("empno").value & ", #" & OraDynaset.Fields("ename").value 
End Sub

Технология OO40 имеет солидное преимущество над другим подходом — VB/JET/ODBC:

  • Доступ к данным осуществляется через идентификатор строки — rowid, а не через первичный ключ или уникальный индекс в подходе VB/ODBC. Если rowid доступен, то данные доступны для корректировки.
  • Возможность создавать связываемые переменных в SQL-предложениях (т. е. » SELECT * FROM EMP WHERE ENAME = :name «). PL/SQL также поддерживает связывание переменных.

Пакет TEXT_IO

Пакет TEXT_IO в Oracle Forms обеспечивает доступ к файлам операционной системы.

Пакет TEXT_IO позволяет приложению, разработанному на Oracle Forms, как читать из файлов операционной системы, так и писать в них.

Возможность использовать пакет Text_IO появилась в Oracle Developer 2000 (Forms 4.5). Рассмотрим пример выгрузки данных с помощью набора процедур и функций пакета TEXT_IO:

declare
 out_file Text_IO.File_Type;
 flnm varchar2(200);
begin
 flnm := GET_FILE_NAME ('H:', 'file_name.xls', 
          'XLS Files (*.xls)|*.xls|', NULL, SAVE_FILE, TRUE);
  out_file:=Text_IO.Fopen (flnm, 'w');
 LOOP
 Text_IO.New_Line (out_file);
 Text_IO.Put (out_file, :eid);
 Text_IO.Put (out_file, CHR(9));
 Text_IO.Put (out_file, :NM);
 IF :system.last_record = 'TRUE' THEN
  EXIT;
 ELSE
  next_record; 
 END IF;
 Text_IO.Fclose (out_file);
end;

В этом разделе мы рассмотрели и проработали возможные варианты работы с Excel-файлами. Такое количество подходов дает вам возможность выбрать для себя наиболее удобный способ импорта и экспорта данных. Мы же с вами рассмотрим пример с использованием технологии .

Object Linking and Embedding

Мы уже изучали подробно эту технологию, когда применяли OLE-контейнер в нашем приложении. Сейчас же мы рассмотрим несколько иной вариант, а именно — встроенный пакет , который поддерживается во всех последних версиях Forms. Пакет сопровождает PL/SQL API для создания, манипулирования и доступа к атрибутам пакета .

Запуск и установка соединения с EXCEL

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

чительно для работы с пакетом OLE2. В листинге 11.1 в секции DECLARE показан пример объявления переменных пакета.

DECLARE
App ole2.obj_type;
Book ole2.obj_type; 
Cell ole2.obj_type; 
Args ole2.list_type;
…
<другие переменные>
… 
BEGIN
 Null; 
END;


Листинг
11.1 .
Объявление типов данных OLE2

Для вызова методов пакета нужно указывать ключевое словоole2.[метод, тип]. Показанный в примере тип данных ole2.obj_type служит для объявления объектов OLE2, а ole2.list_type используется для объявления списка аргументов. Если провести аналогию, то тип данных ole2.list_type очень похож на тип данных ParamList, который также содержит список параметров.

Следующим нашим шагом в изучении пакета OLE2 будет создание объектов OLE2 (листинг 11.2).

DECLARE
App ole2.obj_type; 
BEGIN
 App:=OLE2.Create_Obj('Excel.Application'); 
END;


Листинг
11.2 .
Создание объекта OLE2

Для того чтобы проверить вышеописанный код, создайте произвольную форму с одной кнопкой. Создайте для кнопки обработчик WHEN-BUTTON-PRESSED и выполните в нем приведенный код. Когда в режиме выполнения формы вы нажмете на кнопку, ничего не произойдет, но это на первый взгляд, на самом же деле если вы откроете «Диспетчер задач», то увидите процесс EXCEL.EXE. Теперь, для того чтобы увидеть электронную таблицу в рабочей области, а не в диспетчере задач, добавьте в тело триггера код, приведенный в листинге 11.3, который не только отображает приложение EXCEL, но и загружает указанный файл.

DECLARE
App ole2.obj_type;
Book ole2.obj_type;
DocName varchar2(100);
WorkbooksCollection ole2.obj_type;
Sheets ole2.obj_type;
Sheet ole2.obj_type;
args ole2.list_type;
BEGIN
 docname:=GET_FILE_NAME('');
 App:=OLE2.Create_Obj('Excel.Application');
 OLE2.Set_Property(App,'VISIBLE', 1 );
 WorkbooksCollection:=OLE2.GET_OBJ_PROPERTY(App, 'Workbooks' );
 args:=OLE2.CREATE_ARGLIST;
 OLE2.ADD_ARG(args, docname);
 Book:=OLE2.Invoke_Obj(WorkbooksCollection,'Open', args);
 OLE2.DESTROY_ARGLIST(args);
END;


Листинг
11.3 .
Запуск и отображение объекта OLE2

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

  • OLE2.Add_Arg — добавляет аргумент в список аргументов.
  • OLE2.Add_Arg_Obj — добавляет объект-аргумент в список аргументов.
  • OLE2.Create_arglist — создает список аргументов, который может быть передан OLE2.
  • OLE2.Create_Obj — создает объект OLE2 Automation, например, Microsoft Word, Microsoft Excel.
  • OLE2.Destroy_Arglist — уничтожает список аргументов.
  • OLE2.Get_Char_Property — возвращает свойство объекта OLE2 Automation.
  • OLE2.Get_Num_Property — возвращает идентификатор значения объекта OLE2 Automation.
  • OLE2.Get_Obj_Property — возвращает значение объектного типа объекта OLE2 Automation.
  • OLE2.Invoke — выполняет метод OLE2.
  • OLE2.Invoke_Num — возвращает числовое (number) значение объекта OLE2 Automation, используя указанный метод.
  • OLE2.Invoke_Char — возвращает символьное (character) значение объекта OLE2 Automation, используя указанный метод.
  • OLE2.Invoke_Obj — возвращает значение типа объекта OLE2.
  • OLE2.IsSupported — возвращает TRUE, если OLE2 поддерживается на текущей платформе.
  • OLE2.Last_Exception — возвращает идентификатор последнего возбужденного исключения.
  • OLE2.Release_Obj — сигнализирует объекту OLE2 Automation, что PL/SQL-клиент больше не нуждается в нем.
  • OLE2.Set_Property — устанавливает значение указанного свойства объекта OLE2 Automation.

Таблица
11.1.
Методы пакета OLE2

Метод Параметр Тип Значение
PROCEDURE OLE2.ADD_ARG (параметры) list LIST TYPE Имя списка аргументов, созданного функцией OLE2.Create_Arglist
value VARCHAR2 [NUMBER] Значение добавляемого аргумента
PROCEDURE OLE2.ADD_ARG_OBJ (параметры) list LIST TYPE Ссылка на объект списка
value OBJ TYPE Значение аргумента obj_type, передаваемое серверу OLE2
FUNCTION OLE2.CREATE _ARGLIST RETURN LIST_TYPE Возвращает ссылку на объект список
FUNCTION OLE2.CREATE_OBJ (параметры) RETURN OBJECT_TYPE object VARCHAR2 Создает указанный объект OLE2 Automation
PROCEDURE (параметры) OLE2.DESTROY_ARGLIST list LIST TYPE Имя списка аргументов, созданного функцией OLE2.Create_Arglist
FUNCTION OLE2.GET_NUM _PROPERTY (параметры) RETURN NUMBER object OBJ TYPE Объект OLE2 Automation
property VARCHAR2 Название свойства объекта OLE2, значение которого нужно изменить
arglist LIST TYPE:=0 Имя списка аргументов, созданного функцией OLE2.Create_Arglist
FUNCTION OLE2.GET_OBJ_PROPERTY (парамет ры) RETURN OBJ_TYPE object OBJ TYPE Объект OLE2 Automation
property VARCHAR2 Название свойства объекта OLE2, значение которого нужно изменить
arglist LIST TYPE:=0 Имя списка аргументов, созданного функцией OLE2.Create_Arglist
PROCEDURE OLE2.INVOKE (парамет ры) object OBJ TYPE Объект OLE2 Automation
method VARCHAR2 Метод объекта OLE2
list LIST TYPE:=0 Имя списка аргументов, созданного функцией OLE2.Create_Arglist
FUNCTION OLE2.INVOKE_NUM (парамет ры) RETURN NUMBER object OBJ TYPE Объект OLE2 Automation
method VARCHAR2 Метод объекта OLE2
arglist LIST TYPE:=0 Имя списка аргументов, созданного функцией OLE2.Create_Arglist
FUNCTION OLE2.INVOKE_CHAR (парамет ры) RETURN VARCHAR2 object OBJ TYPE Объект OLE2 Automation
method VARCHAR2 Метод объекта OLE2
arglist LIST TYPE:=0 Имя списка аргументов, созданного функцией OLE2.Create_Arglist
FUNCTION OLE2.INVOKE_OBJ (парамет ры) RETURN OBJ_TYPE object OBJ TYPE Объект OLE2 Automation
method VARCHAR2 Метод объекта OLE2
arglist LIST TYPE:=0 Имя списка аргументов, созданного функцией OLE2.Create_Arglist
FUNCTION OLE2.ISSUPPORTED RETURN BOOLEAN Возвращает TRUE, если OLE2 поддерживается на текущей платформе
FUNCTION OLE2.LAST_EXCEPTION RETURN NUMBER message OUT VARCHAR2 Содержит текст ошибки OLE2
PROCEDURE OLE2.RELEASE_OBJ (параметры) object OBJ TYPE Объект OLE2 Automation
PROCEDURE OLE2.SET_PROPERTY (параметры) object OBJ TYPE Объект OLE2 Automation
property VARCHAR2 Название свойства объекта OLE2, значение которого нужно изменить
value NUMBER [VARCHAR2] Значение свойства
arglist LIST TYPE Имя списка аргументов, созданного функцией OLE2.Create_Arglist

В листинге 11.3 для отображения приложения EXCEL на экране применяется процедура OLE2.SET_PROPERTY. В этом примере мы также использовали тип данных ole2.list_type для создания списка аргументов. Для того чтобы загрузить в EXCEL нужный нам файл, мы добавили аргумент docname, в который сохраняли имя запускаемого файла, а затем активировали его с помощью параметра » Open » процедуры Invoke_obj.

Microsoft Windows itself provides a powerful and easy-to-use tool for sharing data known as OLE, or Object Linking and Embedding. With OLE, you can transfer data between Excel and other Windows’ programs, as described in the paragraphs that follow.

How OLE Works

In order to make sense of OLE, it’s helpful both to understand the basic operation of the Windows clipboard and the terminology of OLE. The following paragraphs provide this background information.

Anytime you use the Copy or Cut command, Windows stores your copy of the copied or cut selection using the Clipboard. When you later choose the Paste command, the Win- dows program—this might be Excel—retrieves what is stored on the Clipboard and pastes it into the worksheet at the location of the cell marker or insertion bar.

While you most often use the Clipboard to move and copy data within a program like Excel, you can also use the Clipboard data between programs because the contents of the Clip- board are stored until you exit Windows.

OLE is simply the name that Microsoft has given to this Clipboard-based method of sharing document data. With OLE you can use a chart from an Excel workbook in a Microsoft Word document. In this case, and using the terminology of OLE, Excel is the server application, the Excel workbook is the source, Word is the client application, and the Word document is the container.

OLE objects can be either static, or embedded, which means that what gets stored in the container document is simply a copy. And OLE objects can also be dynamic, or linked, which means that the client application actually retrieves a picture of the actual data from the server application. With a linked object, this “picture” changes as the data changes.

Although OLE provides you with powerful opportunities to share data between programs, you’ll find it easy to use. You create an OLE connection by copying and pasting the data you want to share. Windows hides the complexity from you and takes care of the actual work of data sharing.

Creating an Embedded OLE Object

As an example of how to create an embedded OLE object, suppose that you do want to use an Excel chart created in a Word document. To easily create such an embedded OLE ob- ject, follow these steps:

  1. Open both the source and destination documents.
    To most easily create embedded OLE objects, start both the server application and the client application. You should also open both the source document and the container document. If you’re working with brand-new, as-yet unsaved documents, first save them.

  2. Select the chart object.
    To select an object, simply click it. For example, to select the chart object shown in Fig- ure 7-1, simply click the chart.

    Figure 7-1. An Excel chart such as you might use for an OLE source document.

    Figure 7-1. An Excel chart such as you might use for an OLE source document.
  3. Copy the object to the clipboard.
    You can copy and object to the clipboard by clicking the Copy toolbar button. Or you can choose the Edit menu’s Copy command.
  4. Display the source document.
    You could do this by clicking the document’s button on the Taskbar. If you wanted to copy the object to a Word document named Report, you would click the Report taskbar button.
  5. Position the insertion point at the location where you want to paste the object.
    You can typically position the insertion point by clicking the point in the document where you want to place the object. For example, if you wanted to paste a chart object after the first paragraph, as shown in Figure 7-2, you would click on the line following the first paragraph.

    fig-7-2

    Figure 7-2. A Word document such as you might use for an OLE destination document.
  6. Paste the chart object into the client application’s container document.
    You can paste an object to the clipboard by clicking the Paste toolbar button. You can also choose the Edit menu’s Paste command. When you do, the client application (with Windows’ help) creates an embedded object that looks as much like the source document object as the server application, Windows, and the client application allow. In other words, Windows and Windows programs use the richest format available for the pasted object. Figure 7-3 shows the Excel chart from Figure 7-1 embedded in the Word document from Figure 7-2.

    Figure 7-3. The Word document after adding the Excel chart object.

    Figure 7-3. The Word document after adding the Excel chart object.

Creating a Linked OLE Object

You create a linked OLE object in almost the same way as you create an embedded OLE object. There’s just one minor twist. You use the Edit menu’s Paste Special command be- cause it lets you indicate you want to create a linked object. For example, to create a linked OLE object using the same Excel chart shown in Figure 7-1 and the same Word document shown in Figure 7-2, follow these steps:

  1. Open both the source and container documents.
    Again, to easily create embedded OLE objects, both the server application and the cli- ent application must be running and both the source document and container document should be open.
  2. Select the chart object.
    As mentioned earlier, to select an object you simply click it.
  3. Copy the object to the clipboard.
    You can copy an object to the clipboard by clicking the Copy toolbar button or by choosing the Edit menu’s Copy command.
  4. Display the source document.
    You could do this by clicking the document’s button on the Taskbar.
  5. Position the insertion point at the location where you want to paste the object.
    You can typically position the insertion point by clicking the point in the document where you want to place the object.
  6. Paste the chart object into the client application’s container.
    This is the only step that works differently from pasting an embedded object. When you paste a linked object, you need to use the Edit menu’s Paste Special command. When you choose this command, the client program displays a Paste Special dialog box. (Fig- ure 7-4 shows Microsoft Word’s version of the Paste Special dialog box, but other program’s Paste Special dialog boxes look almost the same and work in the same basic way.) When the client program displays its Paste Special dialog box, click the Paste Link option button and click OK. Optionally, you can also select a format for the object from the As list box.

    Figure 7-4. The Paste Special dialog box.

    Figure 7-4. The Paste Special dialog box.

When you open a document into which you’ve placed linked OLE objects, the program asks whether you want to update the links. If you do, click Yes, and the client application retrieves updated information from the source document.

By the way, it’s possible to inadvertently break a link. For example, this may happen if the same source document is moved or renamed while the client application and container document are closed. In this case, you need to reestablish the link by repeating the steps you took to originally establish the link.

Editing OLE Objects

You can easily modify linked and embedded objects. To change an object, double-click it. The client application starts the server application and opens the appropriate source document. Once the server application is running and displaying the source, you can make your changes.

Inserting OLE Objects in Excel Workbooks

The object sharing method described in the preceding paragraphs works well in situations in which you want to share data between programs and display that shared data in the con- tainer document. You should also know, however, that Excel’s Insert menu provides an Object command, which you can use to place icons in a workbook that point to source documents.

To use the Insert menu’s Object command to point to new OLE objects, choose the Insert menu’s Object command. When Excel displays the Object dialog box (see Figure 7-5), click the Create New tab, select the program necessary to create the object, and then click OK. Excel starts the server application, and you use it to create the new object. When you fin- ish creating the object, click outside the object—such as on a worksheet cell—to return to Excel. Use the Display As Icon check box to indicate whether you want to see a picture of the object or simply a clickable icon you can use to access the object.

Figure 7-5. The Create New tab of the Object dialog box.

Figure 7-5. The Create New tab of the Object dialog box.

To use the Insert menu’s Object command to point to an existing document, you also choose the Insert menu’s Object command. When Excel displays the Object dialog box, however, you click the Create From File tab and then identify the file you want to use to create the object (see Figure 7-6). To identify the file, enter the complete pathname in the Name box or use the Browse button to display a dialog box you can use to search disks and folders for the file. Select the Link To File check box if you want to create a linked object. Select the Display As Icon check box to indicate whether you want to see a picture of the object or simply a clickable icon you can use to access the object.

Figure 7-6. The Create From File tab of the Object dialog box.

Figure 7-6. The Create From File tab of the Object dialog box.

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Excel как com сервер
  • Excel как ввести значение даты
  • Excel как com объект
  • Excel как ввести данные в ячейку списком
  • Excel каждый файл в новом окне

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии