hangc 发表于 2005-7-28 00:19:00

vba+dll形成的后遗症问题?

通过vba调用vb编制的dll,如果dll重新编译以后或者DLL的位置变化以后,注册表信息发生了变化,导致下次使用是丢失DLL,系统功能无法使用,只能在vbaman中手工定位DLL引用才能解决问题。
      各位是否有更好的办法?

mikewolf2k 发表于 2005-7-28 19:40:00

我也碰到同样问题,不光是dll位置变化会出现此问题,在同样位置重新注册dll文件都可能出现此问题。现在只能打开引用,先取消dll引用(尽管位置一样,仍然显示“丢失dll”),然后再次引用dll,才能用。楼主找到解决办法之后请告知一下,谢谢。

hangc 发表于 2005-7-28 21:20:00

大家共同努力,一定会有办法的!

mccad 发表于 2005-7-28 22:34:00

使用引用的方法不太好,还是使用后绑定的方式,先定义为对象,再Set到对应对象。

mikewolf2k 发表于 2005-7-28 23:24:00

老大能不能给个简单的实例?这些术语看不懂~

lgf727 发表于 2005-7-29 21:04:00

希望明总能给个详细点的例子或代码.我也碰过这种问题,很是头痛.

hangc 发表于 2005-7-29 22:02:00

就是用CreateObject吧?

hangc 发表于 2005-7-29 22:37:00

好消息:该问题获得完美解决,谢谢mccad兄提示。
Dim AppClass As Object
Set AppClass = CreateObject("应用程序名.类名")
AppClass.方法
举例:编制了DLL,应用程序名为Test,包换类CLASS1,CLASS1的方法有showMsg,显示"Hello,World"。
具体编程代码:
sub Test()
Dim AppClass As Object
Set AppClass = CreateObject("Test.class1")
AppClass.showmsg
end sub
执行则显示消息框"Hellow,World!"

mikewolf2k 发表于 2005-7-30 16:42:00

这样就不用再引用dll文件了?试试,谢谢。

mikewolf2k 发表于 2005-7-30 18:40:00

太好了,不用再引用dll文件了。
另外有一个问题,如果系统在两个不同的地方注册了两个不同的test.dll,那么用的是那个文件呢?
页: [1]
查看完整版本: vba+dll形成的后遗症问题?