Warum SAP diese für Entwickler äußerst nützliche Funktion des alten BEx-Analyzer nicht nach Analysis übernommen hat, war mir immer ein Rätsel. Um eine AO-Arbeitsmappe an ein anderes System zu bringen, muss die jeweilige Excel-Instanz geschlossen werden, damit anschließend bei erneuten Öffnen das Popup für eine Verbindung in ein anderes System erscheint.
Einen, zugegebenermaßen nicht besonders eleganten, Workaround gibt es allerding. In einer frühen Präsentation zur API des Addins stellt SAP einen VBA-Codeschnipsel vor, der beim Öffnen einer AO-Mappe prüfen soll, ob das Addin geladen ist und es bei Bedarf nachlädt. Und diesen Code baue ich einfach ein bißchen aus: Ich ergänze ihn um die umgekehrte Funktion – die Deaktivierung des Addins. Mit der Deaktivierung wird das Addin und damit auch die Verbindung zum System getrennt, ohne dass ich die Arbeitsmappe schließen muss. Beim erneuten Aktivieren kann ich mich dann an das gewünschte Zielsystem anmelden.
Und hier ist der Code:
Public Sub enableAO()
Dim addin As COMAddIn
For Each addin In Application.COMAddIns
If addin.progID = "SBOP.AdvancedAnalysis.Addin.1" Then
If addin.Connect = False Then
addin.Connect = True
End If
End If
Next
End Sub
Public Sub disableAO()
Dim addin As COMAddIn
For Each addin In Application.COMAddIns
If addin.progID = "SBOP.AdvancedAnalysis.Addin.1" Then
If addin.Connect = True Then
addin.Connect = False
End If
End If
Next
End Sub
Baue ich mir das Ganze nun noch in ein kleines eigenes Addin, kann ich die Funktion in jeder Excel-Instanz verwenden. Ich habe das Ganze noch nicht komplett ausgetestet – ich freue mich auf eure Kommentare.
Super Ansatz, ich habe ihne bei mir noch etwas geändert.
Sub BO_Schalter()
Dim addin As COMAddIn
For Each addin In Application.COMAddIns
If addin.progID = „SBOP.AdvancedAnalysis.Addin.1“ Then
addin.Connect = Not addin.Connect
End If
Next
End Sub
Durch das „=not“ wird die Eigenschaft einfach umgekehrt. Den Code habe ich in der PERSONAL.XLSB gespeichert und mittels Button in die Menuleiste geleckt. So habe ich es sofort verfügbar und schalte das BO an bzw. aus.
Vielen Dank!!
Es geht noch einfacher:
Public Const cAddIn = „SBOP.AdvancedAnalysis.Addin.1“
Sub BO_Schalter()
Dim addin As COMAddIn
Set addin = Application.COMAddIns(cAddIn)
MsgBox addin.Connect
addin.Connect = Not addin.Connect
MsgBox addin.Connect
End Sub