VB6封装DLL

2010-6-15 18:51  

  这2天学习了VBA的封装,不算完美,但已基本实现预期。人生是否也像这样,努力追逐自己的完满,但涉及到他人时却百啭千回?

  在本机测试了N次,没有问题;发给几个朋友测试,却是问题多多。不是提示这里错误,就是提示那里错误。最好的情况就是————手工添加对dll的引用,然后程序方可顺利运行。自动添加引用————这也是百思不得其解的地方。google、百度,中外资料这么一搜,发现不外乎是以下我要说到的这些,但这些在我本机是没有问题的,按图索骥,一试就灵。换个机器,依然有问题。

先有必要声明2个概念:注册、引用

DLL注册

是指将DLL的相关信息,如:DLL唯一识标号(GUID),版本号(Version)及路径(Path)信息写入注册表中,以供系统对DLL进行识别调用。

我们通过VB编译生成DLL时,VB一般会自动完成对该DLL的注册,但如果要在其它电脑上运行程序时,我们就必须重新对该DLL进行注册。

DLL引用

是指将DLL类库对象集成到代码编辑环境中,以便编程时调用类库中的对象、属性及方法。

我们通过手动方式完成DLL的引用时,系统会自动完成对该DLL的注册,所以我们无需另行对DLL进行注册,但如果我们在其它电脑上运行程序时,还是会出现一些错误。

  注册的方法有2种:手工注册与自动注册

手工注册就不详细说了。就是在VBE里点击菜单栏的工具-引用,然后找到你要添加的dll文件。

主要控诉下自动引用~

采用AddFromFile ,对VBA项目的访问要允许才行,否则会有错误提示:“不信任到Visual Basic Project的程序连接”。

Sub 添加引用()

  On Error Resume Next

  Shell "Regsvr32 /s " & Chr(34) & ThisWorkbook.Path & "\My2.dll" & Chr(34)  '加载引用的Dll

  ThisWorkbook.VBProject.References.AddFromFile (ThisWorkbook.Path & "\My2.dll")

  MsgBox "引用已添加!"

  On Error GoTo 0

End Sub

 

Sub 取消引用()

  On Error Resume Next

  Shell "Regsvr32 /u /s " & Chr(34) & ThisWorkbook.Path & "\My2.dll" & Chr(34) '卸载引用的Dll

  ThisWorkbook.VBProject.References. _

    Remove ThisWorkbook.VBProject.References("My2")

    MsgBox "引用已取消!"

  On Error GoTo 0

End Sub

  注册与引用一起写了,希望可以在对方打开工作簿时自动引用,省去手工添加到麻烦。但目前的事实是:这个自动添加引用,在引用对话框里确实有My2这个dll,他出现了!但是他不干活!我还是要手工去浏览下,找到他,再次添加。