Как добиться поведения ссылки OLE в стиле Excel в настраиваемом объекте OLE

В Word вы можете ссылаться на определенные ячейки в электронной таблице Excel, которая сама может существовать как отдельный файл или как встроенный объект в слове doc. Затем вы можете создать ссылки на определенные ячейки в этой электронной таблице, обычно копируя ячейки из электронной таблицы, активированной на месте, и используя Специальную вставку, чтобы вставить ссылку на скопированные ячейки. Ссылка использует формат Excel! Sheet1! R2C1 в имени ссылки для идентификации ячеек (и вы можете редактировать это имя, чтобы ссылаться на другие ячейки).

Как добиться того же эффекта для пользовательского объекта OLE (созданного с использованием классов MFC OLE)?
Возможно ли это вообще, или Word использует для этого встроенные знания об Excel?


person Jeremy    schedule 28.03.2011    source источник


Ответы (1)


Короткий ответ: Название предмета. Для этого вам необходимо реализовать IOleItemContainer.

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

Длинный ответ: нет, Word не использует секретные знания об Excel (или наоборот), хотя я уверен, что помогает то, что OLE был построен с встраиванием Excel в Word в качестве основного варианта использования.

Вы также можете встроить диапазон Excel в Internet Explorer или почти все, что поддерживает встраивание. И вы можете получить доступ к объекту диапазона и изменить его свойства из VBScript, используя Set oRange = GetObject("c:\path\to\spreadsheet.xls!Sheet1!R2C1") или подобное.

person Ben    schedule 28.03.2011
comment
Итак, после создания Item Moniker, как вы его «раздаете», как сказано в документации для CreateItemMoniker? Вы регистрируете это в ROT? - person Jeremy; 29.03.2011
comment
Привет, ROT не предназначен для главного объекта, а не для элемента внутри него. Для поведения ссылки OLE необходимо указать CF_LINKSOURCE. Обычно он попадает в место назначения из буфера обмена через специальную вставку. - person Ben; 30.03.2011
comment
Хорошая отправная точка для исследования MSDN находится здесь: msdn.microsoft .com / ru-ru / library / 838a3whf (VS.80) .aspx - person Ben; 30.03.2011