Excel динамический обмен данными

Обновлено: 07.07.2024

Одним из важнейших достоинств пакета прикладных программ Microsoft Office является возможность использовать в одном приложении данные, созданные в другом. Для реализации этой возможности предусмотрено несколько способов.

Импорт данных, при котором данные из одного приложения полностью или частично копируются в документ другого приложения. Для осуществления импорта данных приложение, в документ которого планируется импортировать данные, должен иметь соответствующий фильтр.

Фильтр — программа преобразования данных из формата хранения одного приложения в формат другого приложения.

Динамический обмен данными (DDE, Dynamic Data Exchange) — средство, позволяющее разным приложения обмениваться друг с другом командами и данными. Суть динамического обмена состоит с том, что между двумя приложениями устанавливается связь, при помощи которой одно приложение может передавать команды и данные другому и получать от него результаты,

Процедура связывания и внедрения объектов (OLE, Object Linkingand Embedding) — один из наиболее эффективных способов обмена данными между приложениями.

В данном случае под объектом понимается произвольный элемент, созданный в одном из приложений Microsoft Office — приложении- источнике, который можно поместить в другом приложении — приложении-приемнике. Технология OLE позволяет поместить объект в приложении-приемнике таким образом, что вместе с вставленным объектом будет храниться информация о приложении-источнике. В дальнейшем это дает возможность производить правку внедренного объекта средствами приложения, в котором он был создан. Объекты могут представлять собой тексты, рисунки, диаграммы, диапазоны ячеек, звуковые файлы, видеоклипы и т.д. Таким образом, документ- приемник, содержащий внедренные объекты представляет собой контейнер.

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

Выбор способа помещения объекта в контейнер зависит от целого ряда условий.

Исходя из того что связывание только устанавливает путь к исходному объекту и приложению-источнику (с помощью которого был создан объект) и не требует хранения самого объекта в контейнере, а при открытии документа-контейнера связанный объект вставляется в нужное место, решение в пользу именно такого способа помещения объекта в контейнер может быть принято в следующих случаях:

  • • при больших объемах занимаемой объектом дисковой памяти;
  • • объект изменяем или подлежит модификации, при этом в документе-контейнере должны отражаться все изменения.

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

  • • объект изменяем или подлежит модификации, при этом изменения не должны касаться объекта в документе-контейнере, т.е. в документе-контейнере должны сохраняться данные на тот момент времени, когда выполнялась процедура внедрения;
  • • существует угроза потери связи с объектом из-за переноса на другой носитель (компьютер), потери доступа по локальной сети и по другим причинам.

Иногда целесообразно внедрять объект с установлением связей, в этом случае при открытии документа-контейнера происходит сравнение объекта и его копии в документе-контейнере, и при несовпадении оригинала и копии на экран выводится запрос на обновление копии, хранящейся в документе-контейнере.

Использование буфера обмена. Буфер обмена — специальная область памяти, предназначенная для временного хранения вырезанных или скопированных данных или фрагментов документов.

Обмен данными через буфер обмена — наиболее простой и доступный способ взаимодействия между приложениями Microsoft Office. В отличие от системного буфера обмена Microsoft Windows, позволяющего хранить в памяти лишь один скопированный (вырезанный) фрагмент, буфер обмена Microsoft Office допускает одновременное хранение до 24 различных фрагментов, причем скопированные (вырезанные) фрагменты могут попасть в буфер обмена из разных приложений. Просмотр содержимого буфера обмена осуществляется на панели задач Буфер обмена. По умолчанию вывод на экран панели производится нажатием на стрелку в правом нижнем углу вставки Буфер обмена на ленте меню Главная (рис. 5.4.1).

Реализация обмена данными через буфер обмена делится на два этапа: 1) помещение фрагмента документа в буфер обмена и 2) вставка фрагмента из буфера обмена в документ. И если процедура помещения фрагмента в буфер обмена стандартная — в документе-источнике

Буфер обмена Office

Рис. 5.4.1. Буфер обмена Office

выделяется фрагмент и при помощи команды Копировать, выполненной одним из стандартных способов: команда Копировать на вкладке Буфер обмена, сочетанием клавиш Ctrl + С, или по команде Копировать из контекстного меню, фрагмент помещается в буфер обмена.

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

Вставка фрагмента из буфера обмена в документ-приемник может происходить по следующим сценариям:

При статическом обмене данными вставленные данные являются неотъемлемой частью документа-получателя и не сохраняют никакой связи с документом или программой, из которой они были получены. Именно такое копирование или перемещение обычно происходит при работе с одним документом или программой (например, в Word либо Excel).

Когда данные статически копируются или перемещаются из одного приложения в другое, возможность их редактирования в документе-получателе может в зависимости от ситуации сохраняться или утрачиваться. Если данные преобразуются к формату, «понятному» для программы-получателя, их можно будет редактировать. Так произойдет, например, если скопировать текст с листа MS Excel в документ Word, поскольку текстовый редактор Word воспринимает этот текст так, словно вы вручную ввели его с клавиатуры. Вы можете изменять этот текст, но этот измененный текст уже не будет иметь никакого отношения к документу-источнику приложения, из которого вы его извлекли.

Однако, если данные невозможно преобразовать в «родной» для программы-получателя формат, то их можно будет только просматривать и распечатывать, но не редактировать. Так бывает, к примеру, при копировании растровой графики из Windows Paint в документ Word.

Динамический обмен данными

Динамический обмен данными (DDE, Dynamic Data Exchange) - технология, позволяющая приложениям Windows обмениваться друг с другом данными и командами. Суть динамического обмена данными состоит в следующем. Сначала первое приложение должно установит связь со вторым, после чего может посылать второму приложению команды для исполнения, данные для использования, а также запрашивать и получать результаты. В конце сеанс связи приложений по DDE должен быть завершен. DDE обладает тем достоинством, что его поддерживают практически все приложения Windows, начиная с самых первых версий этой операционной системы. В настоящее время DDE постепенно вытесняется более современными средствами, такими как связывание и внедрение объектов (OLE). Одна из причин состоит в том, что DDE не обеспечивает достаточных средств для обработки ряда ситуаций, связанных с обменом данных.

OLE-технология внедрения и связывания объектов

Связывание и внедрение объектов (OLE, Object Linking and Embedding) - наиболее эффективный в настоящее время способ обмена данными между приложениями MS Office.

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

При внедрении объекта в документ-приемник копия внедряемого объекта из документа-источника, как при статическом копировании. Различие заключается в том, что при внедрении сохраняется связь внедренного объекта с приложением-источником (но не с документом-источником. ). Связь внедренного объекта с приложением-источником позволяет их отредактировать средствами приложения-источника, что невозможно выполнить при статическом копировании данных. Допустим, к примеру, что вы скопировали фрагмент электронной таблицы в Excel и внедрили этот фрагмент как объект в документ текстового редактора Word. Когда вам понадобится отредактировать данные в таблице докумена текстового редактора Word, на экране появится приложение для электронных таблиц Excel и вы сможете внести изменения, пользуясь при этом набором команд электронной таблицы, а не текстового редактора Word.

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

Внедрение и связывание обладают одним очень важным преимуществом - эти операции позволяют вставлять в документы такие данные, с которыми программы-приложения, обрабатывающие документ-приемник, не могут работать непосредственно. Например, посредством связывания или внедрения вы можете вставить графический объект (в том числе трехмерный), музыкальный фрагмент или видеоклип в документы, создаваемые большинством текстовых процессоров (например, Word), программ для работы с базами данных (например, Access) и электронных таблиц (например, Excel). При этом в документах, на том месте, куда вы вставили графический объект, звук или видео, будет изображаться соответствующий значок - ярлык. Когда вы захотите просмотреть графический объект, прослушать звуковой фрагмент или просмотреть видео, просто сделайте по ярлыку двойной щелчок мышью. После этого Windows проиграет соответствующий фрагмент при помощи того приложения, в котором данный объект был создан.

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

В этой статье Советы по безопасности содержатся сведения о параметрах безопасности приложений Microsoft Office. В этой статье приведены рекомендации по обеспечению надежной защиты этих приложений при обработке полей DDE (Dynamic Data Exchange).

Сведения о динамическом обмене данными

Ключи управления функциями DDE

В Microsoft Office есть несколько функциональных клавиш, которые хранятся в реестре и ответственны за изменение функций продукта, улучшению поддержки промышленных стандартов и улучшению безопасности. Корпорация Майкрософт запомнила эти ключевые элементы управления функциями и рекомендует включать определенные элементы управления функциями в целях обеспечения безопасности. Дополнительные сведения см. в следующей статье:

Корпорация Майкрософт настоятельно рекомендует всем пользователям Microsoft Office просматривать управляющие клавиши, связанные с безопасностью, и включать их. Настройка разделов реестра, описанных в следующих разделах, запрещает автоматическое обновление данных в связанных полях.

Устранение сценариев атак DDE

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

Предупреждение.

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

Microsoft Excel

Приложение Excel зависит от функции DDE для запуска документов.

Чтобы запретить автоматическое обновление связей в Excel (включая DDE, OLE и внешние ячейки или ссылки на определенные имена), ознакомьтесь со следующей таблицей, в которой указана строка с указанием версии раздела реестра для каждой версии.

Помимо работы с данными Word, приложение может обмениваться данными с другими приложениями, такими как Excel, PowerPoint или Access. Вы можете общаться с другими приложениями с помощью автоматизации (ранее OLE Automation) или динамического обмена данными (DDE).

Автоматизация Word из другого приложения

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

Первым шагом на пути к предоставлению Word другому приложению для автоматизации является ссылка на объект Word Application. В Visual Basic вы используете функцию Visual Basic CreateObject или GetObject, чтобы вернуть ссылку на объект Word Application. Например, в процедуре Excel можно использовать следующие инструкции.

Это инструкция делает объект Application in Word доступным для автоматизации. С помощью объектов, свойств и методов объекта Word Application можно управлять Word. Например, в следующей инструкции создается новый документ Word.

Используйте свойство Видимый, чтобы сделать новый документ видимым после его создания.

Функция CreateObject запускает сеанс Word, который автоматизация не закрывается, когда истекает срок действия объектной переменной, ссылаемой на объект Application. Настройка ссылки объекта на ключевое слово Visual Basic Nothing не закроет Word. Вместо этого используйте метод Quit для закрытия приложения Word. В следующем Excel показан путь запуска Word. Метод Quit используется для закрытия нового экземпляра Word после отображения пути запуска.

Автоматизация другого приложения из Word

Чтобы обмениваться данными с другим приложением с помощью автоматизации из Word, сначала вы получите ссылку на приложение с помощью функции CreateObject или GetObject. Затем, используя объекты, свойства и методы другого приложения, вы добавляете, меняете или удаляете сведения. После внесения изменений закройте приложение. В следующем примере Word отображается путь Excel запуска. Вы можете использовать Visual Basic set с ключевым словом Nothing для очистки переменной объекта, которая имеет тот же эффект, что и закрытие приложения.

Использование динамического обмена данными (DDE)

Заметка о безопасности

Задача Способ
Запуск DDE DDEInitiate
Получение текста из другого приложения DDERequest
Отправка текста в другое приложение DDEPoke
Проведение команды в другом приложении DDEExecute
Закрыть канал DDE DDETerminate
Закрыть все каналы DDE DDETerminateAll

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

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

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