• 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_USERSoftwareAutodeskAutoCADCurVer")
        '读取cad的语言版本
        acadCurVer2 = wshell.regread("HKEY_CURRENT_USERSoftwareAutodeskAutoCAD" & acadCurVer1 & "CurVer")
        '读取cad的最后一次启动的语言版本
        acadLanguage = wshell.regread("HKEY_CURRENT_USERSoftwareAutodeskAutoCAD" & 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_USERSoftwareAutodeskAutoCAD" & acadCurVer1 & "" & acadCurVer2 & "AutodeskSharedFolder")
        
        '读取cad的32位类型库的路径
        'strAcad32ShardFd = wshell.regread("HKEY_CURRENT_USERSoftwareAutodeskAutoCAD" & 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
    

     

     

  • 相关阅读:
    最优二叉查找树
    最长公共子序列问题
    最大子段和问题
    01背包问题
    浅析LRU(K-V)缓存
    LeetCode——LRU Cache
    LeetCode——Gas Station
    LeetCode——Jump Game II
    LeetCode——Jump Game
    LeetCode——Implement Trie (Prefix Tree)
  • 原文地址:https://www.cnblogs.com/NanShengBlogs/p/13606109.html
Copyright © 2020-2023  润新知