|
258 / 199 / 49
Регистрация: 18.12.2015
Сообщений: 416
|
|||||||
Создание COM библиотеки для VBA(Excel)05.10.2017, 18:37. Показов 7818. Ответов 22
Метки нет (Все метки)
Добрый день!
Подскажите пожалуйста, кто сталкивался с подобным и как это решается: пытаюсь создать dll с простой функцией, которая будет возвращать результат, для vba в excel. Действую по этому методу, но ничего не выходит в виду ошибки
Так же действовал по этому методу, ошибка та же самая. Судя по посту на geeksengine, VS должен зарегистрировать библу, если установлен параметр "Регистрация для COM взаимодействия", но при попытке зарегистрировать через regsvr32 получаю "Модуль загружен, но точка входа DllRegisterServer не найдена". Что конкретно я делаю не так? Есть ли возможность загрузить библиотеку более простым способом, т.к. библа планируется ставиться на несколько компьютеров?
0
|
|||||||
| 05.10.2017, 18:37 | |
|
Ответы с готовыми решениями:
22
Создание макроса для Word со ссылками на элементы библиотеки переводов в Excel Создание файла Excel. Библиотеки Какие Excel библиотеки необходимы для создания CreateObject('Excel.Application') ? |
|
1085 / 915 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
|
|
| 05.10.2017, 23:06 | |
|
Библиотеку после компиляции не перетаскиваете? Сссылка в VBA добаляется?
0
|
|
|
258 / 199 / 49
Регистрация: 18.12.2015
Сообщений: 416
|
|
| 05.10.2017, 23:59 [ТС] | |
|
Sklifosofsky, и перетаскивал, и не перетаскивал.Были попытки зарегистрировать из системной папки.
Ссылка добавляется, во втором случае при вводе даже появляется список процедур/функций, т.е. как бы видит библу. И в любом случае маячит это
0
|
|
|
1085 / 915 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
|
||||||
| 07.10.2017, 14:57 | ||||||
|
https://msdn.microsoft.com/que... B)&rd=true
Может что упустили.
Попробуйте переписать в точности пример по ссылке и, не трогая библиотеку с папки компиляции, подрубиться к ней (.tlb) При компиляции не забудьте галочку поставить в разделе "компиляция" "регистрация для COM-взаимодействия"
1
|
||||||
|
258 / 199 / 49
Регистрация: 18.12.2015
Сообщений: 416
|
|
| 08.10.2017, 00:05 [ТС] | |
|
Sklifosofsky, я тоже так считаю, что я где-то, что-то упустил(у меня есть подозрение, что дело может быть в самом excel). Код из вышеприведенной вами ссылке я уже пытался использовать(хотя он по сути тот же самый, что я приводил по второй ссылке постом выше), пробую еще раз и подключаюсь к tlb в папке с проектом.
На картинке видно, что при попытке набрать функцию AddNumers, всплывают подсказки параметров, значит все таки связь есть, я прав? А вот при попытке установить Set'ом объекту obj свойства мы получаем как обычно
0
|
|
|
1591 / 664 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
|
||
| 08.10.2017, 08:14 | ||
|
1
|
||
|
258 / 199 / 49
Регистрация: 18.12.2015
Сообщений: 416
|
|
| 08.10.2017, 13:26 [ТС] | |
|
Step_UA, да.
Вроде разобрался, необходимо было зарегистрировать через RegAsm, независимо от того, стоит ли галочка "Регистрация для COM взаимодействия". До этой темы моя ошибка была в том, что я пытался скормить путь к dll'ке regasm'у из папки проекта без кавычек и не заметил этого... И конечно же нужно использовать RegAsm из C:\Windows\Microsoft.NET\Framework64 для х64 системы, иначе будет та же ошибка в excel, проверял для AnyCPU. Всем спасибо!
0
|
|
|
4 / 4 / 0
Регистрация: 10.07.2017
Сообщений: 52
|
||||||
| 11.02.2019, 05:31 | ||||||
|
Здравствуйте.
Столкнулся с той же ошибкой 429 на строке
Причем, если после компиляции dll в VS зарегистрировать ее еще и через RegAsm: C:\Windows\Microsoft.NET\Framework64\v4. 0.30319\RegAsm.exe "E:\Документы\Visual Studio 2017\Projects VB\ClassTest\ClassTest\bin\Release\Class Test.dll", тогда Excel выдает: "не удается найти указанный файл", (см.скрин), хотя, при написании кода, VBE показывает даже параметры функции в подсказке, т.е. библиотека подключена и видна. Если не регистрировать при компиляции, а только через RegAsm с созданием tlb, - тоже самое. Куда еще копать? Win7 (64), Excel 2016 (64), VS 2017 (AnyCPU)
0
|
||||||
|
1715 / 1391 / 165
Регистрация: 25.07.2015
Сообщений: 2,551
|
|
| 11.02.2019, 10:13 | |
|
В качестве размышлений :
Я бы начал копать в сторону разрядности dll. Office крайне критичен к 32 и 64 битным библиотекам, т.е. 64 -битный Office не увидит 32-битную библу. AnyCpu по умолчанию создаёт 32 битное приложение - подразумевается , что оно должно работать на всех платформах. Попробуйте изменить платформу компиляции.
2
|
|
|
4 / 4 / 0
Регистрация: 10.07.2017
Сообщений: 52
|
|||||||
| 12.02.2019, 00:59 | |||||||
|
И действительно!
Была мысль в эту сторону , но собственных нейронов не хватило довести до ума. (Новичок еще в VB.NET, больше в VBA сидел.) Если тот же AnyCPU-DLL зарегистрировать 32-битным "регазмом", тогда проблем с "поиском файла" нет. Но все-равно появляется ошибка 429. А если в VS заменить AnyCPU на x64, (для моего Excel), то и без RegAsm сразу все взлетело! (Правда непонятно, как же человек смог запустить AnyCPU на 64? описание выше: https://www.cyberforum.ru/post11234282.html если я его правильно понял...) --- И теперь новый подвох! Если отключить регистрацию в VS и делать ее только через RegAsm, - снова ошибка с поиском файла... Сравнительный анализ реестра показал, что VS, при регистрации DLL, добавляет в реестр 4 строки с путем к файлу:
В тоже время, если в RegAsm добавить ключ /codebase, то как и сказано в документации, если DLL не является "сборкой со строгим именем", - работать не будет. :-( Можно, конечно, еще "нарисовать топор" с "ручным" прописыванием в реестр этих строк с путем... для регистрации DLL на стороннем компе. Но, по идее, должно же быть как-то проще без этих танцев с бубном? В общем, я что-то плохо понимаю в этом зоопарке...
0
|
|||||||
|
1591 / 664 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
|
||
| 12.02.2019, 01:15 | ||
|
0
|
||
|
4 / 4 / 0
Регистрация: 10.07.2017
Сообщений: 52
|
||
| 12.02.2019, 03:19 | ||
|
У меня сборка офиса, которая не дает выбора отдельных компонентов для каждого приложения... Добавлено через 1 час 47 минут Step_UA, и еще, исходя из вопроса, тогда на стороннем компе "поддержка программирования .net" тоже должна присутствовать???
0
|
||
|
1591 / 664 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
|
|
| 12.02.2019, 09:35 | |
|
SSL-13, мне кажется это наиболее логичным объяснением ... это стандартный компонет: панель управления - офис/эксель - изменить - добавить или удалить компоненты.
0
|
|
|
4 / 4 / 0
Регистрация: 10.07.2017
Сообщений: 52
|
||
| 12.02.2019, 16:46 | ||
|
Step_UA, на это я уже писал:
В частности, если бы я писал библу только для себя, тогда мне этот компонент выходит и не нужен, т.к. достаточно скомпилить DLL в х64, и "на лету" зарегистрировать ее VS-ом - все работает. А вот если на сторонних компах каждого пользователя заставлять выяснять и устанавливать доп.компоненты для Excel, - это уже никуда не годится. Тем более у многих, как и у меня, могут также элементарно отсутствовать доп.компоненты. Тогда проще программно залезть к юзеру в реестр с "топором", как я уже писал выше, и добавить туда недостающие строчки... Тем более что авто-регистрацию DLL по любому еще придется прикручивать. Только вот хотелось бы как-то более цивилизованно это сделать.
0
|
||
|
1591 / 664 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
|
|
| 12.02.2019, 17:04 | |
|
1. Это не дополнительный компонент Excel'я ... Вы используете похоже кастомную сборку, в которой его просто вырезали
2. Никто не мешает создавать два установщика или в одном иметь две библиотеки и регить нужную - но траблов будет больше А начаилось, то с того что не работает с кодом MSIL, который выполняется под .net ))
0
|
|
|
4 / 4 / 0
Регистрация: 10.07.2017
Сообщений: 52
|
||
| 12.02.2019, 23:36 | ||
|
Почему и спросил, - как можно убедиться в наличии/отсутствии установленной "поддержки" иным способом, кроме как пере(до)установкой Excel и что конкретно она дает/делает?
0
|
||
|
4 / 4 / 0
Регистрация: 10.07.2017
Сообщений: 52
|
||
| 12.02.2019, 23:52 | ||
|
К тому же, если бы чего-то не хватало, то вряд ли бы Excel видел и подхватывал эту DLL, да еще правильно показывал ее начинку в подсказках при написании кода.
Добавлено через 10 минут
0
|
||
|
1591 / 664 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
|
||||||
| 13.02.2019, 01:08 | ||||||
|
0
|
||||||
|
0 / 0 / 0
Регистрация: 20.10.2016
Сообщений: 4
|
||||||
| 13.02.2019, 14:33 | ||||||
|
Добрый день.
У меня был такая же проблема. В vba подключал dll и вызывал методы.
Эта dll работала на XP в excel 2010 и в COREL DRAW 13 и 16 версиях А вот в windows 8.1 Работала только в excel , а в Corel Draw 17 и 18 версиях вылезала ошибка 429 (activex component can't create object 429) Перекомпиляция проекта c# на windows 8.1 В vs2017 AnyCPU ничего не изменила. Только когда dll скомпилировал в 64 или x86 .а не в AnyCPU , ошибка прошла и объект стал создаваться , методы выполняться
0
|
||||||
|
4 / 4 / 0
Регистрация: 10.07.2017
Сообщений: 52
|
||||||||
| 14.02.2019, 23:29 | ||||||||
|
Суммируя вышесказанное,
(наверняка кто-то будет проходить тот же путь и спотыкаться), для распространения своих библиотек AnyCPU не годится, - надо делать 2 DLL: x86 и x64. И не забыть выключить у себя в VS регистрацию библиотеки, чтоб не запортить свой реестр. Может кому еще пригодится... Жаль что об этом нигде толком ничего не написано. Столько материала перелопачено и потрачено времени - мрак. ( --- Добавлено через 50 минут Регистрация библиотек, (для .NET Framework 4.5 и выше):
А в ветках:
добавить параметр с указанием своего пути к библиотеке, например:
2
|
||||||||
| 14.02.2019, 23:29 | |
|
Помогаю со студенческими работами здесь
20
Создание папок VBA Excel Создание папок в VBA Excel
Создание теста VBA Excel UserForm Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|