オミット
VBAを介してプロジェクトに参照を追加する方法は2つあります
1) GUIDの使用
2) dllを直接参照します。
両方をカバーさせてください。
しかし、最初にこれらはあなたが世話をする必要がある3つの事柄です
a)マクロを有効にする必要があります
b)セキュリティ設定で、[VisualBasicプロジェクトへのアクセスを信頼する]がオンになっていることを確認します
c)「MicrosoftVisual Basic forApplicationsExtensibility」オブジェクトへの参照を手動で設定しました
方法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
:)