在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下用了,效率又高,保密性又好