Цитата |
---|
bedvit написал: А какой должен быть target у события calculate? |
DLL на C++ или C# для Excel
12.11.2022 13:21:36
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|||||
|
|
12.11.2022 15:09:15
|
|||
|
|
23.11.2022 00:27:44
Кстати, у меня также вопрос по данной теме и я думаю мне помогут)
Денис, вот небольшой пример, который компилируется! Думаю как раз то, что Вам нужно! main.cpp
Но теперь вопрос на двоих) Как данную DLL зарегестрировать? По туториалам выдает вот такую ошибку: "...Модуль загружен, но точка входа DLLRegisterServer не найдена..."Я за C++ не шарю, также как и Денис, только на этапе изучения, но я так понимаю нужно функцию DLLRegisterServer интегрировать в код чтобы DLL подключить к тому же Excel через References? Или Винда 10 корявая у меня и в ней дело? |
|||||
|
|
23.11.2022 08:00:41
Не нужно ее регистрировать. Или вы хотите СОМ - сделать? Тогда регистрировать надо, но там несколько посложнее. Судя по вашему коду вы делаете обычную dll.
Как сделать и использовать я скинул в 25 сообщении в ролике. Что там непонятно? Вы смотрели?
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
|
23.11.2022 08:15:58
Да смотрел и изначально по тому примеру пробывал делать, но тот код не компилируется на VS 2022. Выше код работает как нужно.
И функции для точки входу нужно прописывать, плюс на ранее или познее связывание парочку примочек. На этом форуме я думаю найдется человек, кто сталкивался с этим) Планета Excel всё-таки!) Или книга может есть на создание подобных фич? |
|||
|
|
23.11.2022 09:37:32
Смешали в всё в одну кучу. Как говорит мой коллега: "сало, мёд, говно и гвозди".
1.Процедурная библиотека: dll - регистрация не нужна, используем Declare в VBA. Не является "как встроенная". Самая простая, вы ее и пытаетесь сделать. Все просто как две копейки. 2. ООП-библиотека: СОМ (можно использовать классы). Нужна регистрация в реестре. Нужно понимать что такое интерфейсы, ранеее связывание (статистическое), позднее (динамическое), регистрацию в реестре, как это все настроить и куча всего другого. Сложно. По сути не является "как встроенная". Используется в VBA и в других языках и программах, поддерживающих СОМ. Половина винды - это СОМ. 3. Является "как встроенная"-специальная библиотека для Excel: XLL. По сути процедурная dll,т.к.использует С API Excel, т.е. функционал самого Excel для листа. При должном уровне прокачки, можно там же реализовать поддержку СОМ, с полной интеграцией с СОМ-моделью Excel, и соответственно всего доступного функционала. Для Excel самый быстрый и продвинутый инструмент. Используется в VBA, и в самом Excel, в виде функций листа (если реализовано СОМ, то и в любом другом виде: отслеживание событий, управление обектами-листы,графики, имена, схемы, создание и управление VBA-макросами, не написав не строчки на VBA и т.д.). Сочетает сложность СОМ и С API Excel.
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
|
23.11.2022 09:52:15
Я Вас понял, но в целом идея создать не простую DLL, а что-то наподобие Microsoft Scriptlet Library (один из функционалов - Словарь VBA). Чтобы можно было подключить к VBA и не прописывать в коде Declare, а также аргументы и параметры чтобы были в коде при раннем связывании!
Код выше просто как пример) И я так понимаю необходимо реализовывать COM? Но Вы ещё указали на .xll. Я так понимаю это проще и если нужно, скажем только для VBA, то это лучший вариант? |
|
|
|
23.11.2022 10:04:04
Если вам нужнн быстрый словарь для VBA, то можно использовать
Если потренироваться в написании dll, то лучше первый вариант. Если хотите пойти в серьезную разработку, то готовтесь нужно иметь ввиду, что это самостоятельная и сложная задача. Сразу и все вам никто не расскажет. XLL - это процедурная dll. Если вам нужны классы, это COM.DLL. Для раннего и позднего связывания там разные механизмы. Если пойдете в СОМ, возможно в Студии вам облегчит путь
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
|
23.11.2022 10:27:04
bedvit, благодарю за информацию. Судя по словарю, Вы тот самый человек, который всё это реализовал (просмотрел Ваш сайт). В итоге BedvitXLL.xll и BedvitCOM.dll у Вас имеется своя). Если не сложно описать, то как долго изучали необходимый материал для реализации данного софта
|
|
|
|
23.11.2022 21:27:01
В основном это самообразование и участие в разработках на разных форумах. В т.ч. и здесь. Проекту несколько лет и до сих изучаю матчасть, по блокам, который ранее не проходил, а они встретились в проекте. Литература есть, разная для разных направлений. Советовать не могу, не знаю, что вы хотите. Английский знать всегда полезно, но это не обязательное условие.
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
|
28.11.2022 08:05:57
Появилась идея реализовать
bedvit, подскажите пожалуйста, если не сложно, литературу и прочие источники по реализации COM.dll Погуглил и понял, что для меня лучше COM.dll Я же правильно понимаю, что для реализации функционала в коде, необходимо COM.dll?
Изменено: |
|
|
|
28.11.2022 09:27:19
Начинайте с азов.
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
|
28.11.2022 09:37:41
bedvit, , благодарю за ресурсы. Буду вникать). И последний (надеюсь) вопрос.
Процедурная dll по вызову функций быстрее dll типа COM? Или разницы нету? |
|
|
|
28.11.2022 09:52:27
«Бритва Оккама» или «Принцип Калашникова»?
|
||||
|
|
|||