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

