Microsoft Excel

Herbers Excel/VBA-Archiv

Add-In

Betrifft: Add-In von: tobias
Geschrieben am: 13.09.2004 09:04:32

Hallo

ich hab folgende Prozedur zum erstellen eines Menüs in der Symbolleiste.
In Office XP läuft das auch ganz prima aber in Office 2000 löscht er nicht das alte Menü beim öffnen von Excel. Das heist also, bei jedem neuen öffnen hab ich die Einträge einmal mehr in meinem Menü.

Hat damit jemand Erfahrung?
Ich bin für jeden Tipp dankbar.

Private Sub Workbook_Open()
    Dim Bar As CommandBar, Menue As CommandBarPopup
    Dim Button As CommandBarButton, wka As Workbook
    Static StoppAdd As Integer
    Set Bar = Application.CommandBars("Worksheet Menu Bar")
    
    On Error Resume Next
    
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    
    Set wka = Workbooks("Datenkonsolidierung-Assistent.xla")
    If Err <> 0 Then
        Bar.Controls("Tools").Delete
        
        On Error GoTo 0
        
        Set Menue = Bar.Controls.Add(msoControlPopup, Before:=Bar.Controls.Count + 1)
        Menue.Caption = "Tools"
        Set Button = Menue.Controls.Add
        With Button
           .Caption = "Info"
           .OnAction = "Info"
           .Style = msoButtonIconAndCaption
           .FaceId = 487
        End With
        Set Button = Menue.Controls.Add
        With Button
           .Caption = "Word Tabelle importieren"
           .OnAction = "Importerladen"
           .Style = msoButtonIconAndCaption
        End With
    Else
        Set Menue = Bar.Controls("Tools")
        Set Button = Menue.Controls.Add
        With Button
           .Caption = "Word Tabelle importieren"
           .OnAction = "Importerladen"
           .Style = msoButtonIconAndCaption
        End With
    End If
    
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    
    StoppAdd = StoppAdd + 1
    If StoppAdd > 1 Then Exit Sub
    AddInInstall

End Sub


mfg tobias
  


Betrifft: AW: Add-In von: Axel
Geschrieben am: 13.09.2004 12:31:04

Hallo,

also der Code sieht einwandfrei aus, auch für Excel 2000.

Das Tools-Menü wird ja nur dann gelöscht und neu erstellt, wenn die Anweisung

Set wka = Workbooks("Datenkonsolidierung-Assistent.xla")

fehlschlägt.

Ist das AddIn bereits geladen, kommt der Else-Zweig zum Tragen und es wird nur noch ein Eintrag ins Tools-Menü vorgenommen.

Ich gehe mal davon aus, dass du auf dem Rechner mit Excel 2000 dieses AddIn bereits geladen hast, auf dem Excel XP-Rechner aber nicht.

Gruß
Axel


  


Betrifft: AW: Add-In von: tobias
Geschrieben am: 13.09.2004 13:22:31

Hallo

Danke für deine Antwort.

Sie sind bei beiden Rechnern schon Installiert.
Wenn ich z.B. das Add-In Excel-Hilfe von Herbers Excel-CD gestartet habe ist es beim nächsten öffnen von Excel-2000 immernoch in der Symbolleiste aber nicht im Add-In Manager.
Ich glaube da muss irgendwas in Excel-2000 eingestellt werden!??

mfg Tobias


  


Betrifft: AW: Add-In von: Axel
Geschrieben am: 13.09.2004 16:09:26

Hallo,

nach einem Absturz kann es schon einmal vorkommen, dass benutzerdefinierte Einträge in den Menüs oder Symbolleisten stehen bleiben.

Starte Excel 2000 jungfräulich, also ohne AddIns und lösche dann einfach die verwaisten Einträge über "Ansicht | Symbolleisten | Anpassen".

Symbolleisten werden über den Reiter "Symbolleisten", Auswahl der Leiste und dann über den Button "Löschen" entfernt.

Menüeintrage ziehst du im Anpassen-Dialog einfach in Richtung Tabellenblatt und lässt die Maus dann los. Der Eintrag wird dann gelöscht.

Gruß
Axel


  


Betrifft: AW: Add-In von: tobias
Geschrieben am: 13.09.2004 16:54:42

Hallo Axel

Danke für die Antwort.
werde es nochmal ausprobieren...

mfg Tobias


  


Betrifft: AW: Add-In lösung von: tobias
Geschrieben am: 13.09.2004 20:27:22

Hallo

für alle die es interessiert. So gehts auch unter Office 2000:

Private Sub Workbook_Open()
    Dim Bar As CommandBar, Menue As CommandBarPopup
    Dim Button As CommandBarButton
    Static StoppAdd As Integer
    Set Bar = Application.CommandBars("Worksheet Menu Bar")
    
    On Error Resume Next
    
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    
    Set Menue = Bar.Controls("Tools")
    If Err <> 0 Then
                
        On Error GoTo 0
        
        Set Menue = Bar.Controls.Add(msoControlPopup, Before:=Bar.Controls.Count + 1)
        Menue.Caption = "Tools"
        Set Button = Menue.Controls.Add
        With Button
           .Caption = "Info"
           .OnAction = "Info"
           .Style = msoButtonIconAndCaption
           .FaceId = 487
        End With
        Set Button = Menue.Controls.Add
        With Button
           .Caption = "Word Tabelle importieren"
           .OnAction = "Importerladen"
           .Style = msoButtonIconAndCaption
        End With
    Else
        Set Menue = Bar.Controls("Tools")
        Set Button = Menue.Controls.Add
        With Button
           .Caption = "Word Tabelle importieren"
           .OnAction = "Importerladen"
           .Style = msoButtonIconAndCaption
        End With
    End If
    
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    
    StoppAdd = StoppAdd + 1
    If StoppAdd > 1 Then Exit Sub
    AddInInstall

End Sub


mfg tobias