zoukankan      html  css  js  c++  java
  • VBA 调用DLL动态链接库

    在ArcMap中引用动态链接库
           我在VB6下编译生成了一个动态链接库文件VBAPrj.dll,其中有一类模块VBACls,此类模块有一个方法Test(Doc As Object)。
            常见的方法有三种(作者:张业新):

    1.打开VBA编辑器,点"工具"菜单下的"引用"命令,在引用对话框中引用该动态链接库。
            调用代码如下:
             Dim VBACls As New VBAPrj.VBACls
             VBACls.Test(ThisDocument) 
      2.如果知道该动态链接库文件的位置,可以在ThisDocument代码窗口以代码形式引用, 代码如下:
             Private Sub Document_Open()
                       On Error Resume Next
                       Me.VBProject.References.AddFromFile "D:VBAPrj.dll"
             End Sub
        3.将动态链接库文件拷贝到文档同一目录下,可在ThisDocument代码窗口中建立如下引用函数:
              Private Function GetProjectDoc() As Object
                     On Error Resume Next
                     Dim VBACls As Object
                     Set VBACls = CreateObject("VBAPrj.VBACls")
                     If VBACls Is Nothing Then
                  MsgBox "VBAPrj.dll必须和文档在同一目录下!"
                  Exit Function
                    End If
                    Set GetProjectDoc = VBACls
             End Function
            然后以以下代码形式调用Test:
             Dim objPrjDoc As Object
             Set objPrjDoc = GetProjectDoc
             Call objPrjDoc.Test(ThisDocument)
             Set objPrjDoc = Nothing
           使用第一种方法调试提示找不到类库,第二种方法我没试过,用了第三种方法调试成功。我也觉得第三种还是蛮好的,除了多几行代码。成功调用DLL后原来很多在VB下写的东东简单改一下就可以在VBA下用了,效率又高,保密性又好

  • 相关阅读:
    canvas,画个纸飞机
    时钟
    去除滚动条,内容仍然可以滚动
    鼠标指针移入移出改变图片透明度
    Mysql数据库优化总结
    一次利用nginx漏洞的木马事件
    一个批量删除大表数据的shell小脚本
    MegaCli监控raid卡磁盘信息以及相关的shell脚本
    MYSQL delete语句不支持别名?
    一次Mysql数据库服务器磁盘空间满引发的写入和同步问题
  • 原文地址:https://www.cnblogs.com/lbnnbs/p/4784950.html
Copyright © 2011-2022 走看看