|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
Хочу создать в 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 Что надо сделать, чтоб всё заработало? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2015, 20:11 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
MrVoidOffice 2010 x64 в 64-битной версии офиса и не заработает ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2015, 00:53 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
Eolt, А шо ж теперь делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2015, 19:21 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
Попробуй выбрать dll через кнопку browse в самом экселе, возможно он его зарегистрирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 10:05 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
Antonariy, В том-то и дело, что пробовал - не работает :( ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 11:24 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
MrVoidЗапускал regsvr32, но получал такую ошибку: The module C:\Temp\Project1.dll was loaded but the call to DllRegisterServer failed with error code 0x80004005 и как ты регистрировал эту dll на компе x64? приведи строку регистрации полную ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 11:50 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
вот так надо регистрировать 32-битные dll на x64 системах: 1. перейти в каталог c:\windows\syswow64 2. найти там cmd.exe и нажать shift+right mouse , затем выбрать запуск от имени администратора 3. набрать в открывшейся консоле: c:\windows\syswow64\regsvr32.exe <%path to dll%> ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 11:54 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
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 - как альтернатива. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 13:20 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
обычные 32-битные dll будут работать ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 13:25 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
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-битного процесса? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 13:34 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
MrVoidEolt, А шо ж теперь делать? Любой 64-битный компилятор к твоим услугам. C#, VB.NET, C++ например ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 13:34 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
мне казалось, что declare можно сделать для x86 dll ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 13:48 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
например: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 13:52 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 13:53 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
Konst_One, MrVoid скомпилил 32-битную dll в VB6, она будет работать только в 32-битном офисе. В Office 64 - не будет. Тут выход или делать out-of-process server, т.е. ActiveX EXE или 64-битный компилятор. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 14:32 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
есть Visual Studio Tools for Office ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 14:36 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
можно обёртку на ней написать к своей dll ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 14:36 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
Konst_Oneмне казалось, что declare можно сделать для x86 dll Это для нативных dll activex - немного другая тема ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 14:36 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
hclubmkKonst_Oneмне казалось, что declare можно сделать для x86 dll Это для нативных dll activex - немного другая тема я в курсе, Карл =) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 14:38 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
Konst_Oneя в курсе, Карл =) Настало время удивительных историй? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 14:43 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
hclubmkKonst_Oneя в курсе, Карл =) Настало время удивительных историй? не понял вас. я ТС предложил вариант с обычной native dll, что вам то не нравится? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 14:45 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
Konst_One, зачем городить огород из оберток, если достаточно реализовать тот-же функционал посредством того-же VB6 (без привлечения третьих компиляторов для реализации нативной dll), через activex-exe? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 15:06 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
а кто спорит, хороший вариант. пусть ТС выбирает, что ему подходит под его задачу ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 15:12 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
hclubmkзачем городить огород из обертокВсе ведь зависит от цели. Если цель DLL - это функционал надстройки для приложения, то не очень удобно будет распространять exe, вместо неё. Я, например, пишу и надстройки и отдельные приложения, но если надстройка ориентирована на работу внутри приложения(функции, работа с активными ячейками и перехват событий) - то перенос в exe вообще не вариант. Это если правильно понял направление мысли(т.к. признаюсь - видимо туплю, но не понял как можно через ActiveX exe сделать надстройку для подключения к приложению). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 15:20 |
|
VB6 ActiveX DLL не работает в Экселе
|
|||
---|---|---|---|
#18+
Я бы не стал использовать ActiveX EXE в связке с офисом, если код выносится для увеличения быстродействия. Потому как обмен с out-of-process server очень медленный. И вообще VBA в офисе 64 самодостаточен, и может обойтись без костылей из старого VB6, лучше весь функционал писать сразу на нем. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2015, 16:56 |
|
|
start [/forum/topic.php?fid=60&msg=39127257&tid=2155693]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
66ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 308ms |
total: | 472ms |
0 / 0 |