ich suche eine Möglichkeit neben den Standardmenus und Symbolleisten von Excel, die auf einen Rechner evtl. weiterhin installierten Addins (mit entsprechenden Menus) beim öffnen einer Datei zu deaktivieren und beim beenden der Datei die ursprüngliche Installation des Rechners / Excel wieder herzustellen.
Bei folgendem Code (zusammengesucht und selbst erstellt) entstehen leider bei einigen addins _ Fehler:
Private Sub Workbook_Open()
Dim oBar As CommandBar
Dim wks As Worksheet
Dim iRow As Integer
Dim strFileName As String
Dim oPopUp As CommandBarControl
Dim sPopUp As String
Set wks = ThisWorkbook.Worksheets("CmdBars")
wks.Cells.ClearContents
For Each oBar In Application.CommandBars
If oBar.Visible And oBar.Type msoBarTypeMenuBar Then
iRow = iRow + 1
wks.Cells(iRow, 1).Value = oBar.Name
oBar.Visible = False
End If
Next oBar
End Sub
so schreibt die Routine die installierten Symbolleisten in das entsprechende Dateiblatt
unter anderem auch die per addin installierte "Sun ODF Plugin"
wird nun jedoch beim schliessen der Datei die folgende Routine aufgerufen:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim oBar As CommandBar
Dim iRow As Integer
Dim oPopUp As CommandBarControl
Dim sPopUp As String
iRow = 1
With ThisWorkbook.Worksheets("CmdBars")
Do Until IsEmpty(.Cells(iRow, 1))
Application.CommandBars(.Cells(iRow, 1).Value).Visible = True
iRow = iRow + 1
Loop
.Cells.ClearContents
End With
End Sub
dann erscheint ein Laufzeitfehler '5' ungültiger Prozeduraufruf oder ungültiges Argument.
Mein Ansatz die addins zu deaktivieren, glückt leider nicht; evtl. mache ich da einen Fehler oder übersehe etwas:
Beim Open Workbook habe ich folgendes eingefügt:
Private Sub Workbook_Open()
Dim oVBP As Object
Dim oBar As CommandBar
Dim wks As Worksheet
Dim iRow As Integer
Dim strFileName As String
Dim oPopUp As CommandBarControl
Dim sPopUp As String
Set wks = ThisWorkbook.Worksheets("CmdBars")
wks.Cells.ClearContents
For Each oVBP In Application.VBE.VBProjects
If Right(oVBP.Filename, 3) = "xla" Then
iRow = iRow + 1
If InStr(1, oVBP.Filename, "\") Then
strFileName = Mid(oVBP.Filename, InStrRev(oVBP.Filename, "\") + 1)
strFileName = Mid(strFileName, 1, Len(strFileName) - 4)
End If
wks.Cells(iRow, 2).Value = strFileName
AddIns(strFileName).Installed = False
End If
Next oVBP
iRow = 0
For Each oBar In Application.CommandBars
If oBar.Visible And oBar.Type msoBarTypeMenuBar Then
iRow = iRow + 1
wks.Cells(iRow, 1).Value = oBar.Name
oBar.Visible = False
End If
Next oBar
End Sub
Es erscheint nun der Laufzeitfehler '9' Index ausserhalb des gültigen Bereichs ( in diesem Fall das Addin xlWebFinder)
Da ich nicht weiss, welche addins auf dem jeweiligen Rechner installiert sind und eine manuelle Deaktivierung eigentlich keinen Sinn macht (weiss ich ob dass auf Dauer von jedem User gemacht wird) suche ich eine Möglichkeit die von mir gewünschte Oberfläche zu erzeugen inklusiv Deaktivieren von crtl-c etc. und am Ende eine Wiederherstellung der Ausgangssituation.
Hat jemand einen Hinweis eine Idee oder gar Lösung?
für jeden Tipp dankbar
Gueni