Здравствуйте, UCoder, Вы писали:
UC>Думаю, что для вызова функций рабочего листа (см. п.2 выше) такая схема будет работать без проблем. Однако, есть сомнения насчет работоспособности реализации п.1. В частности, в DllMain 32-битной DLL на событие DLL_PROCESS_ATTACH свойству Application->Handle присваивается Handle главного окна Excel. Благодаря этому все диалоговые окна из DLL работают как часть Excel (например, минимизируются при сворачивании Excel). Но в нашем случае главное окно Excel имеет 64-битный Handle (?), а Application->Handle в DLL — 32-битный. Могут ли из=за этого возникнуть проблемы?
Могут.
UC>Ето-либо сталкивался с подобной задачей?
UC>Исходники 32-битной DLL имеются, но скомпилировать их под 64-битную платформу пока не представляется возможным.
У вас есть два нормальных варианта
1. Перейти на 64 бита везде
2. Начать использовать Excel через COM
Здравствуйте, UCoder, Вы писали:
B>>Захости её в COM+
UC>Чуть подробнее?
Я как-то упустил, что AddIn в виде XLL.
Но если у вас существует возможность переписать надстройку как Excel COM-AddIn (IDTExtensibility2), то её можно хостить не в процессе Excel, а в процессе-суррогате (COM+). В этом случае будет работать маршаллинг, которому, если упрощенно, разрядность безразлична. Но вообще это костыль и лучше таки иметь две сборки под конкретную разрядность.