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

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

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

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

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

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

<P>大家共同努力,一定会有办法的!</P>

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

<P>就是用CreateObject吧?</P>

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

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

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

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

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

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