AW: Objekt (Extra\Verweise) in VBA einbinden
25.04.2012 19:02:18
Markus
Hallo Lorenz
du sagst, dass mein Link nicht weiterhilft. Da bin ich aber gar nicht deiner Meinung.
Wollte es eigentlich bei diesen 2 Sätzen belassen und habe mich danach doch durchgerungen ein Beispiel zu erstellen, da es vielleicht Anderen auch mal nützlich ist.
Der Verweis kann dem VBProjekt während der Laufzeit mit den Methoden AddFromFile, resp. AddFromGuid hinzugefügt werden. Dazu muss aber bereits ein Verweis auf die Bibliothek "Microsoft Visual Basic for Applications Extensibility" vorhanden sein (Menu Extras | Verweise).
Mit meiner Prozedur ListReferences() kannst du Name, GUID, Version und Pfad der Verweise ermitteln, und mit den 2 Prozeduren TestGuid() und TestFile() das Ganze testen.
Habe keine Kommentare eingefügt, da ich annehme, dass der Code auch so verständlich ist :-)
Gruss Markus
-----------------------------------
Option Explicit
Sub ListReferences()
Dim ref As Reference
For Each ref In Application.VBE.ActiveVBProject.References
Debug.Print ref.Name & " : " & ref.GUID & " - " & ref.Major & " - " & ref.Minor & " - " _
& ref.FullPath
Next
End Sub
Sub TestGuid()
AddReferenceFromGuid "{632B6060-BBC6-11D2-A329-006097C4E476}", 1, 0 ' Windows Media _
Encoder
End Sub
Sub TestFile()
AddReferenceFromFile "C:\Program Files (x86)\Windows Media Components\Encoder\wmenc.exe" ' _
Windows Media Encoder"
End Sub
Sub AddReferenceFromFile(strName As String)
Dim blnRefExists As Boolean
Dim ref As Reference
For Each ref In Application.VBE.ActiveVBProject.References
If ref.FullPath = strName Then
blnRefExists = True
MsgBox "Verweis auf """ & ref.Name & """ war schon gesetzt!"
Exit For
End If
Next
If Not blnRefExists Then
On Error Resume Next
Set ref = Application.VBE.ActiveVBProject.References.AddFromFile(strName)
If Err.Number 0 Then
MsgBox "Verweis auf """ & strName & """ konnte nicht erstellt werden!"
Else
MsgBox "Verweis auf """ & strName & """ wurde erstellt!"
End If
End If
End Sub
Sub AddReferenceFromGuid(strGUID As String, lngMajor As Long, lngMinor As Long)
Dim blnRefExists As Boolean
Dim ref As Reference
For Each ref In Application.VBE.ActiveVBProject.References
If ref.GUID = strGUID Then
blnRefExists = True
If ref.Major lngMajor Or ref.Minor lngMinor Then
MsgBox "Versionsnummer von " & ref.Name & " nicht identisch!"
Else
MsgBox "Verweis auf """ & ref.Name & """ war schon gesetzt!"
End If
Exit For
End If
Next
If Not blnRefExists Then
On Error Resume Next
Set ref = Application.VBE.ActiveVBProject.References.AddFromGuid(strGUID, lngMajor, _
lngMinor)
If Err.Number 0 Then
MsgBox "Verweis konnte nicht erstellt werden!" & vbCrLf _
& "GUID: " & strGUID
Else
MsgBox "Verweis auf """ & ref.Name & """ wurde erstellt!"
End If
End If
End Sub