Ommit
VBA를 통해 프로젝트에 참조를 추가하는 방법에는 두 가지가 있습니다.
1) GUID 사용
2) dll을 직접 참조합니다.
둘 다 다루겠습니다.
하지만 먼저 이것들은 당신이 돌봐야 할 세 가지입니다
a) 매크로를 활성화해야합니다.
b) 보안 설정에서 "Visual Basic 프로젝트에 대한 액세스 신뢰"가 선택되어 있는지 확인하십시오.
c) `Microsoft Visual Basic for Applications Extensibility '개체에 대한 참조를 수동으로 설정했습니다.
방법 1 (GUID 사용)
레지스트리에서 GUID를 검색해야하므로 일반적으로이 방법을 사용하지 않습니다. LOL이 싫습니다. 여기 에서 GUID에 대해 자세히 알아 보십시오 .
주제 : 코드를 통해 VBA 참조 라이브러리 추가
링크 : http://www.vbaexpress.com/kb/getarticle.php?kb_id=267
Sub AddReference()
Dim strGUID As String, theRef As Variant, i As Long
strGUID = "{00020905-0000-0000-C000-000000000046}"
On Error Resume Next
For i = ThisWorkbook.VBProject.References.Count To 1 Step -1
Set theRef = ThisWorkbook.VBProject.References.Item(i)
If theRef.isbroken = True Then
ThisWorkbook.VBProject.References.Remove theRef
End If
Next i
Err.Clear
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:=strGUID, Major:=1, Minor:=0
Select Case Err.Number
Case Is = 32813
Case Is = vbNullString
Case Else
MsgBox "A problem was encountered trying to" & vbNewLine _
& "add or remove a reference in this file" & vbNewLine & "Please check the " _
& "references in your VBA project!", vbCritical + vbOKOnly, "Error!"
End Select
On Error GoTo 0
End Sub
방법 2 (dll을 직접 참조)
이 코드는 다음에 대한 참조를 추가합니다. Microsoft VBScript Regular Expressions 5.5
Option Explicit
Sub AddReference()
Dim VBAEditor As VBIDE.VBE
Dim vbProj As VBIDE.VBProject
Dim chkRef As VBIDE.Reference
Dim BoolExists As Boolean
Set VBAEditor = Application.VBE
Set vbProj = ActiveWorkbook.VBProject
For Each chkRef In vbProj.References
If chkRef.Name = "VBScript_RegExp_55" Then
BoolExists = True
GoTo CleanUp
End If
Next
vbProj.References.AddFromFile "C:\WINDOWS\system32\vbscript.dll\3"
CleanUp:
If BoolExists = True Then
MsgBox "Reference already exists"
Else
MsgBox "Reference Added Successfully"
End If
Set vbProj = Nothing
Set VBAEditor = Nothing
End Sub
참고 : 오류 처리를 추가하지 않았습니다. 실제 코드에서 사용하는 것이 좋습니다. :)
구타 편집mischab1
:)