powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB6 ActiveX DLL не работает в Экселе
25 сообщений из 35, страница 1 из 2
VB6 ActiveX DLL не работает в Экселе
    #39126501
MrVoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу создать в VB6 DLL библиотеку, чтобы использовать ей в Экселе. Создал простую DLL'ку c одним классом и одним методом в нём. В экселе на машине с установленным VB6 (Windows XP) библиотека нормально цепляется, экземпляры класса создаются, метод вызывается.
Однако когда пытаюсь её использовать на другой машине (Windows 10 x64, Office 2010 x64), то получаю ошибку: ActiveX component can't create object

Запускал regsvr32, но получал такую ошибку:
The module C:\Temp\Project1.dll was loaded but the call to DllRegisterServer failed with error code 0x80004005

Что надо сделать, чтоб всё заработало?
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39126550
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrVoidOffice 2010 x64

в 64-битной версии офиса и не заработает
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39126779
MrVoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eolt,

А шо ж теперь делать?
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39126998
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй выбрать dll через кнопку browse в самом экселе, возможно он его зарегистрирует.
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127094
MrVoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

В том-то и дело, что пробовал - не работает :(
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127123
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrVoidЗапускал regsvr32, но получал такую ошибку:
The module C:\Temp\Project1.dll was loaded but the call to DllRegisterServer failed with error code 0x80004005

и как ты регистрировал эту dll на компе x64? приведи строку регистрации полную
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127126
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так надо регистрировать 32-битные dll на x64 системах:

1. перейти в каталог c:\windows\syswow64
2. найти там cmd.exe и нажать shift+right mouse , затем выбрать запуск от имени администратора
3. набрать в открывшейся консоле:
c:\windows\syswow64\regsvr32.exe <%path to dll%>
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127231
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
technet.microsoft.comActiveX controls and COM add-ins ActiveX controls and add-in (COM) DLLs (dynamic link libraries) that were written for 32-bit Office will not work in a 64-bit process. As a result, Office 2010 64-bit solutions that try to load 32-bit ActiveX controls or DLLs will not work. Installations of 64-bit Office 2010 will run only 64-bit controls. Computers can have 64-bit and 32-bit controls installed, and Office 2010 64-bit can only run the 64-bit versions of the controls. The workaround for resolving these issues is to obtain 64-bit compatible controls and add-ins or to install Office 2010 32-bit (WOW).
Так, что объект ч/з ActiveX dll в любом случае в Excel x64 создать не получится. ActiveX exe - как альтернатива.
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127241
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обычные 32-битные dll будут работать
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127257
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneвот так надо регистрировать 32-битные dll на x64 системах:

1. перейти в каталог c:\windows\syswow64
2. найти там cmd.exe и нажать shift+right mouse , затем выбрать запуск от имени администратора
3. набрать в открывшейся консоле:
c:\windows\syswow64\regsvr32.exe <%path to dll%>

блин что за бред? С каких это пор 32-битные DLL стали работать в адресном пространстве 64-битного процесса?
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127261
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrVoidEolt,

А шо ж теперь делать?

Любой 64-битный компилятор к твоим услугам. C#, VB.NET, C++ например
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127279
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне казалось, что declare можно сделать для x86 dll
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127289
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например:

Код: vbnet
1.
Public Declare PtrSafe Function GetDesktopWindow Lib "USER32" () As LongPtr
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127295
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127347
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

MrVoid скомпилил 32-битную dll в VB6, она будет работать только в 32-битном офисе. В Office 64 - не будет.
Тут выход или делать out-of-process server, т.е. ActiveX EXE или 64-битный компилятор.
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127355
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть Visual Studio Tools for Office
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127357
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно обёртку на ней написать к своей dll
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127358
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneмне казалось, что declare можно сделать для x86 dll
Это для нативных dll
activex - немного другая тема
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127362
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hclubmkKonst_Oneмне казалось, что declare можно сделать для x86 dll
Это для нативных dll
activex - немного другая тема

я в курсе, Карл =)
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127368
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneя в курсе, Карл =) Настало время удивительных историй?
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127370
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hclubmkKonst_Oneя в курсе, Карл =) Настало время удивительных историй?

не понял вас. я ТС предложил вариант с обычной native dll, что вам то не нравится?
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127400
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,
зачем городить огород из оберток, если достаточно реализовать тот-же функционал посредством того-же VB6 (без привлечения третьих компиляторов для реализации нативной dll), через activex-exe?
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127405
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а кто спорит, хороший вариант. пусть ТС выбирает, что ему подходит под его задачу
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127418
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hclubmkзачем городить огород из обертокВсе ведь зависит от цели. Если цель DLL - это функционал надстройки для приложения, то не очень удобно будет распространять exe, вместо неё. Я, например, пишу и надстройки и отдельные приложения, но если надстройка ориентирована на работу внутри приложения(функции, работа с активными ячейками и перехват событий) - то перенос в exe вообще не вариант.
Это если правильно понял направление мысли(т.к. признаюсь - видимо туплю, но не понял как можно через ActiveX exe сделать надстройку для подключения к приложению).
...
Рейтинг: 0 / 0
VB6 ActiveX DLL не работает в Экселе
    #39127554
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы не стал использовать ActiveX EXE в связке с офисом, если код выносится для увеличения быстродействия.
Потому как обмен с out-of-process server очень медленный. И вообще VBA в офисе 64 самодостаточен, и может обойтись без костылей из старого VB6, лучше весь функционал писать сразу на нем.
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB6 ActiveX DLL не работает в Экселе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]