452 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo liebe Excelianer,

wir benutzen viele Addins in unseren xls Dateien aber nicht alle User lassen ihre Addins beim Beenden der Datei auch die Addins wieder löschen. Mit der Zeit häufen sich die Addins immer mehr, so dass ich mir die Frage stelle, ob es einen VBA code gibt, der einfach alle Addins löschen kann, ohne dass man dafür den Namen der Addins kennen muss. Also einfach ein generelles Löschen der Addins.

Wäre echt toll, wenn Ihr hier einen Tipp hättet.

Vielen Dank vorab und einen Guten Rutsch ins Wochenende.

Peter

10 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Peter,

schau mal, ob du hiermit etwas anfangen kannst: Link

Gruß

M.O.

0 Punkte
Beantwortet von pitsa Einsteiger_in (32 Punkte)
Hallo M.O.

entschuldige bitte, dass ich mich erst jetzt melde. Es ging leider nicht eher.

Habe die letzten Tage hin und her probiert aber leider konnte ich den Code unter dem Link nicht anpassen. Irgendetwas  verstehe ich hier einfach nicht. Der Code zählt noch nicht einmal die Addins richtig (irgendwie immer nur vier anstatt 3, 5 oder mehr).

Mein Code sieht wie folgt aus:

Sub KillAddIn()

    For i = 1 To AddIns.Count
        Application.CommandBars("Worksheet Menu Bar").Controls("Update Model List").Delete
    Next

End Sub

Wäre echt toll, wenn Du mal einen Blick drüber werfen könntest.

Vielen lieben Dank.

Gruss

Peter
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Peter,

in deiner Frage hattest du über Add-Ins geschrieben. Wenn ich mir jetzt deinen Code ansehe, geht es wohl eher um benutzerdefinierte CommandBars.

Schau mal ob dir dieser Code weiterhilft:

Sub CBloeschen()
Dim cb As CommandBar

For Each cb In CommandBars
  If Not cb.BuiltIn Then cb.Delete
Next

End Sub

Du hast geschrieben, dass nicht alle Benutzer ihre Add-Ins (oder benutzerdefinierte Menüs?) beim Schließen der Datei löschen lassen. Das kann - und sollte - man über das Before-Close-Ereignis der jeweiligen Arbeitsmappe machen.

Gruß

M.O.

0 Punkte
Beantwortet von pitsa Einsteiger_in (32 Punkte)
Hallo M.O.,

vielen Dank für Deinen Code. Leider ist "cb" bei mir die ganze Zeit "Nothing", so dass die Commandbar nicht gelöscht werden kann. Anbei mal der Code, der die Commandbar erstellt:

    Set myMenuBar = Application.CommandBars("Worksheet Menu Bar")
    Set ctrl1 = myMenuBar.Controls.Add(Type:=msoControlButton, ID:=2950)
    ctrl1.Caption = "Update Model List"
    ctrl1.Style = msoButtonCaption
    ctrl1.TooltipText = "Updates model list in sheet Base"
    ctrl1.OnAction = "Sheet_Names"

Vielleicht hilft das ja weiter. Ein BeforeClose Makro habe ich schon.

Vielen Dank.

Gruss

Peter
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo,

den Commandbar kannst du wie folgt löschen:

Sub weg()

Application.CommandBars("Worksheet Menu Bar").Controls("Update Model List").Delete

End Sub

Schau mal, ob dir das schon weiterhilft.

Gruß

M.O.

0 Punkte
Beantwortet von pitsa Einsteiger_in (32 Punkte)

Hallo M.O.

entschuldige bitte für meine stark verspätete Antwort. Ich war leider völlig Land unter, so dass ich Excel nicht wie gewollt fröhnen konnte.

Ja, Dein letzter Befehl funktioniert prima. Leider habe ich sehr viele Controls (auch von anderen Mitarbeitern) und ich kenne daher auch nicht alle mit Namen, so dass ich sie auch mit diesem Befehl nicht löschen kann. Gibt es daher eine Lösung, wie ich einfach die Commandbars, die nicht Excelstandard sind löschen kann?

Application.CommandBars("Worksheet Menu Bar").Controls("Update Model List").Delete
Application.CommandBars("Worksheet Menu Bar").Controls("Clean up Specs").Delete

Application.CommandBars("Worksheet Menu Bar").Controls("Unbekannt 1").Delete
Application.CommandBars("Worksheet Menu Bar").Controls("Unbekannt n").Delete

Vielen Dank

Peter

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Peter,

probiere mal den folgenden Code:

Sub commandbars_loeschen()
Dim cb As CommandBar

For Each cb In CommandBars
   If Not cb.BuiltIn Then cb.Delete
Next
End Sub

Gruß

M.O.

0 Punkte
Beantwortet von pitsa Einsteiger_in (32 Punkte)
Hallo M.O.,

um diesen Code schleiche ich auch schon eine Weile rum aber irgendwie funktioniert er nicht, da er nichts löscht. Liegt dies vielleicht daran wie die Menüleiste erstellt wird? Alle folgende Buttons befinden sich unter AddIns.

    Set myMenuBar = Application.CommandBars("Worksheet Menu Bar")
   
    Set ctrl1 = myMenuBar.Controls.Add(Type:=msoControlButton, ID:=2950)
        ctrl1.Caption = "Update Model List"
        ctrl1.Style = msoButtonCaption
        ctrl1.TooltipText = "Updates model list in sheet Base"
        ctrl1.OnAction = "Sheet_Names"
   
    Set ctrl2 = myMenuBar.Controls.Add(Type:=msoControlButton, ID:=2950)
        ctrl2.Caption = "Clean up Specs"
        ctrl2.Style = msoButtonCaption
        ctrl2.TooltipText = "Cleans up the specifications of all machines in this file"
        ctrl2.OnAction = "Text_Conv"

Vielen lieben Dank.

Gruss

Peter
+1 Punkt
Beantwortet von m-o Profi (22.7k Punkte)
ausgewählt von halfstone
 
Beste Antwort

Hallo Peter,

versuche mal den folgenden Code:

Sub wegneu()

With Application.CommandBars("Worksheet Menu Bar")

  'Bestehendes Menü löschen
   Do While .Controls.Count > 0
     On Error Resume Next
     .Controls(1).Delete
   Loop

End With

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von pitsa Einsteiger_in (32 Punkte)
Guten Morgen M. O.,

vielen Dank. Deine Antwort hat mein Problem gelöst.

Gruss

Peter
...