VB CreateObject dll неоднозначность - PullRequest
1 голос
/ 28 декабря 2011

Не могли бы вы помочь со следующим

Я пытаюсь использовать Some.dll версии 5.0 в моем коде. Тем не менее, Excel имеет несколько ссылок на одну и ту же DLL, с более ранними версиями, такими как 4.0 Если я бегу:

Set co = CreateObject("SomeClass.Object")

, даже если я создал ссылку в Tools-> References для самого нового Some.dll, он вызывает одну из самых старых dll, которая не имеет какой-либо функциональности.

У меня нет прав администратора для изменения реестра, удаления программ с моего компьютера.

Возможно ли как-то установить ссылку на новейшую версию dll?

Я пытался:

Private Declare Function LoadLibrary Lib "kernel32"...
lb = LoadLibrary(C:\somepath\Some.dll) ' lb is the 5.0 version dll that should be used
set co = CreateObject("lb.Object")

однако, это не работает («ActiveX ... не может создать объект»)

и просмотрел всю сеть, но не смог найти совет, как создать объект с определенным путем к DLL.

Пожалуйста, помогите, спасибо: Джим

Ответы [ 2 ]

2 голосов
/ 29 декабря 2011

Я мог бы найти решение между ними,

это функция с именем CreateObjectFromFile (), которая помогает.

CreateObjectFromFile("C:\somepath\Some.dll", "SomeClass")
1 голос
/ 31 августа 2012

Я встретил ту же проблему и решил ее следующим образом:

Ссылка на старую версию:

Set co = CreateObject("SomeClass.Object.4.0")

Ссылка на новую версию:

Set co = CreateObject("SomeClass.Object.5.0")
...