Wichtig ist das ein Verweis zu "Microsoft Visual Basic for Applications Extensibility 5.3" gesetzt wird.
Dies wird mit der zweiten Prozedur "ActivateReferenceByGUID" durchgeführt
Es gibt 2 Möglichkeiten einen Verweis (Reference) hinzuzufügen (aktivieren).
1) Via GUID - Globally Uniqe Identifyer (Präferenz!)
die GUID ist in der Registry zu finden
2) Direkter Verweis (Angabe des Pfades zur .dll)
ist nicht zu empfehlen, da sich die .dll je nach OS Version an unterschiedlichen Stellen befinden kann
Code: Alles auswählen
Sub RenameModuleName(strNameAlt As String, strNameNeu As String)
'IMPORTANT: To run this code without occuring error you habe to activate the Rerence
'Microsoft Visual Basic for Applications Extensibility 5.3
'0,0 should pick the latest version installed on the computer
ActivateReferenceByGUID "{0002E157-0000-0000-C000-000000000046}", 0, 0
Application.VBE.ActiveVBProject.VBComponents(strNameAlt).Name = strNameNeu
End Sub
Code: Alles auswählen
Public Sub ActivateReferenceByGUID(strGUID As String, lngMajor As Long, lngMinor As Long)
On Error Resume Next
'Für das akvive VBA Projekt
'Application.VBE.ActiveVBProject.References.AddFromGuid strGUID, lngMajor, lngMinor
'Für die aktive Arbeitsmappe
ThisWorkbook.VBProject.References.AddFromGuid strGUID, lngMajor, lngMinor
On Error GoTo 0
End Sub
Man kann auch ein sauberes Errorhandling durchführen:
Code: Alles auswählen
'Clear any errors so that error trapping for GUID additions can be evaluated
Err.Clear
' Code to add the reference
'If an error was encountered, inform the user
Select Case Err.Number
Case Is = 32813
'Reference already in use. No action necessary
Case Is = vbNullString
'Reference added without issue
Case Else
'An unknown error was encountered, so alert the user
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