Siddharth のソリューションは非常に便利ですが、ユーザーが Excel バージョンの VBE で適切な参照をチェックしていないという事実に関連する呼び出しを常に受け取っていた場所で、ロールアウトしたツールからこれらの関数を提供すると思いました。多くの考えられる理由。
オプションとしてそれを捨てるだけで、それを見るものです。その中には非常にプロジェクト固有の機能がいくつかありますが、ニーズに合わせて変更することはおそらく非常に簡単です。
Function ValidateReferences() As Boolean
'makes sure that user has the proper references installed for downloading data through API
Dim arrDescription() As String, arrGUID() As String
Dim arrMajor() As Long, arrMinor() As Long
Dim strMessage As String
ValidateReferences = True
'removes any broken references
For i = ThisWorkbook.VBProject.References.Count To 1 Step -1
If ThisWorkbook.VBProject.References.Item(i).IsBroken Then ThisWorkbook.VBProject.References.Remove ThisWorkbook.VBProject.References.Item(i)
Next
'will attempt to add the reference for the user
arrGUID() = Split("{2A75196C-D9EB-4129-B803-931327F72D5C},{E6C9285A-7A87-407A-85E7-D77A70C100F5},{45A929B3-E493-4173-B6E5-0CD42041C6DC},{F24B7FA2-8FB9-48B7-825F-7C9F4A82F917},{7A80DAB5-1F61-4F9A-A596-561212ACD705},{18142BD6-1DE1-412B-991C-31C7449389E6},{C3ED6DC2-BED0-4599-A170-B1E1E32C627A}", ",", , vbTextCompare) ' {2A75196C-D9EB-4129-B803-931327F72D5C}
arrDescription() = Split("Microsoft ActiveX Data Objects 2.8 Library,myDummyRef COM 3.8.0,myDummyRef COM 3.8.0,myDummyRef COM 3.8.0,myDummyRef 3.6.0 Library,myDummyRef,myDummyRef Library", ",", , vbTextCompare) 'Microsoft ActiveX Data Objects 2.8 Library
ReDim arrMajor(6)
arrMajor(0) = 0 '0
arrMajor(1) = 3 '3
arrMajor(2) = 3 '3
arrMajor(3) = 3 '3
arrMajor(4) = 3 '3
arrMajor(5) = 1 '1
arrMajor(6) = 1 '1 -> ADODB = 2
ReDim arrMinor(6)
arrMinor(0) = 0
arrMinor(1) = 8
arrMinor(2) = 8
arrMinor(3) = 8
arrMinor(4) = 6
arrMinor(5) = 0
arrMinor(6) = 0 '-> ADODB = 8
For i = LBound(arrGUID()) To UBound(arrGUID())
On Error GoTo ErrCheck
If i = 0 Then 'adodb not working on AddFromFile. I could use add from file on all references, perhaps? -> refactor later
ThisWorkbook.VBProject.References.AddFromFile ("C:\Program Files\Common Files\System\ado\msado15.dll")
Else
ThisWorkbook.VBProject.References.AddFromGuid arrGUID(i), arrMajor(i), arrMinor(i)
End If
Next
If ValidateReferences = False Then MsgBox "The following references could not be added to the VB Project: " & Right(strMessage, Len(strMessage) - 2) & "." & vbNewLine & vbNewLine & "Please refer to 4. Appropriate DLL Files on the 'Connectivity_Help' tab for more information."
Exit Function
ErrCheck:
Select Case Err.Number
Case Is = 32813 'reference already in use, nothing to report
Case Else
ValidateReferences = False
strMessage = strMessage & ", " & arrDescription(i)
End Select
Resume Next
End Function
この関数は、dll を見つけるのに役立つ参照情報を出力しますが、出力するには参照をチェックする必要があります。
Sub print_ref_path()
Dim i As Integer
For i = ThisWorkbook.VBProject.References.Count To 1 Step -1
Dim strName As String, strPath As String, strGUID as String
strName = ThisWorkbook.VBProject.References.Item(i).name
Debug.Print strName
strPath = ThisWorkbook.VBProject.References.Item(i).FullPath
Debug.Print strPath
strGUID = ThisWorkbook.VBProject.References.Item(i).GUID 'think this is right, might need to change
Next
End Sub