EXCEL 引用autocad vba,自动加载其类型库



Sub AutoADDAutoCADTypeLib()
    Dim Ref As Variant
    Dim hasAutoTypeLib As Boolean, hasAXDBLib As Boolean, acadName As String
    hasAutoTypeLib = False: hasAXDBLib = False
    For Each Ref In ThisWorkbook.VBProject.References
        If Ref.Name = "AutoCAD" Then hasAutoTypeLib = True
        If Ref.Name = "AXDBLib" Then hasAXDBLib = True
    Next Ref
    Dim wshell As Object
    Set wshell = CreateObject("WScript.Shell")
    Dim strAcadShardFd As String, acadCurVer1 As String, acadCurVer2 As String, acadLanguage As String
    '读取cad的版本
    acadCurVer1 = wshell.regread("HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\CurVer")
    '读取cad的语言版本
    acadCurVer2 = wshell.regread("HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\" & acadCurVer1 & "\CurVer")
    '读取cad的最后一次启动的语言版本
    acadLanguage = wshell.regread("HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\" & acadCurVer1 & "\" & acadCurVer2 & "\AllUsersFolder")
    Dim LanguagePath As Variant, acadVer As String
    LanguagePath = VBA.Split(acadLanguage, "\")
    acadVer = VBA.Mid(acadCurVer1, 2, 2) & LanguagePath(UBound(LanguagePath) - 1)
    acadName = LanguagePath(UBound(LanguagePath) - 3)
    '读取cad的64位类型库的路径
    strAcadShardFd = wshell.regread("HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\" & acadCurVer1 & "\" & acadCurVer2 & "\AutodeskSharedFolder")
    
    '读取cad的32位类型库的路径
    'strAcad32ShardFd = wshell.regread("HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\" & acadCurVer1 & "\" & acadCurVer2 & "\AutodeskShared32Folder")
    
    Set wshell = Nothing
    
    If hasAutoTypeLib = False Then
        ThisWorkbook.VBProject.References.AddFromFile (strAcadShardFd & "acax" & acadVer & ".tlb")
        MsgBox acadName & " AutoCAD Type Lib Already add to referecne scucces"
    Else
        MsgBox "AutoCAD Type Lib Already add to referecne, no need add aagin"
    End If
    If hasAXDBLib = False Then
        ThisWorkbook.VBProject.References.AddFromFile (strAcadShardFd & "axdb" & acadVer & ".tlb")
        MsgBox acadName & " AXDBLib Already add to referecne scucces"
    Else
        MsgBox "AXDBLib Already add to referecne, no need add aagin"
    End If
End Sub

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM