Wenn man ein Add-In für die VB-IDE schreibt dann kommt der unter Umständen der Wunsch auf, auf die geöffnete Instanz von Access, zu der diese VB-IDE gehört, zugreifen zu können.
Die Schaltfläche mit dem Access-Logo oben links in der Symbolleiste lässt die Hoffnung keimen, dass dieser Zugriff nicht all zu schwer zu realisieren ist. Nach ein paar Versuchen bin ich schliesslich zu folgender Lösung gelangt:
Im Ereignis On_Connection des Add-Ins wird ein Verweis auf die Anwendung, in der das Add-In gestartet wurde, bereitgestellt. Der Verweis zielt in diesem Fall auf die aktuelle Instanz der VB-IDE. Dieser Verweis wird in einer globalen Variable gespeichert und steht somit überall im Add-In zur Verfügung.
Über das aktive VB-Projekt der VB-IDE kann man an dessen Dateinamen gelangen. Diesen kann man verwenden, um mit dem Befehl GetObject einen Verweis auf die zugehörige Instanz von Access zu erhalten:
Private Sub HoleAccessInstanz()
Dim ThisAccApp As Access.Application
If Len(ThisVBIDE.ActiveVBProject.FileName) > 0 Then
Set ThisAccApp = GetObject(ThisVBIDE.ActiveVBProject.FileName)
End If
MsgBox ThisAccApp.CurrentDb.Name
Set ThisAccApp = Nothing
End Sub
Wenn man den Verweis erst einmal hat, kann man damit alles machen, was man mit einem normalen Application-Objekt auch machen kann. In diesem Fall wird der Name der Datenbank ausgegeben. (Es gibt bestimmt sinnvollere Einsatzzwecke.)