Beim Starten von Excel-Addin Menüeintrag aktivieren

  • #1
K

kukris

Bekanntes Mitglied
Themenersteller
Dabei seit
21.05.2003
Beiträge
133
Reaktionspunkte
0
Hallo,

nachdem Matjes mir freundlicherweise ein Skript zum Konvertieren von Excel-Dateien in
Textdateien geschrieben hatte, habe ich daraus ein Excel-Addin erstellt.

Nun will ich, daß beim Starten des Addins sich automatisch ein neuer Menüpunkt in
die Menüleiste einklinkt (z. B. Tools).

Dazu habe ich folgenden Code dem Excel-Addin als neues Modul zum bereits bestehenden
Programmcode hinzugefügt:

Code:
Public Sub Workbook_Open()
'Menü erzeugen
Dim Menue As CommandBarPopup
Dim Schaltflaeche As CommandBarButton
' Menüpunkt anlegen
With Application.CommandBars(Worksheet Menu Bar)
    Set Menue = .Controls.Add(Type:=msoControlPopup, _
         before:=.Controls.Count, temporary:=False)
End With
' Unterpunkte im Menü anlegen
Menue.Caption = &Tools                     ' Name des Menüs
    Set Schaltflaeche = Menue.Controls.Add
        With Schaltflaeche
            .Style = msoButtonIconAndCaption   -> Format für Menüpunkt: Icon und Text
            .FaceId = 733                     -> Nummer des Icons
            .Caption = Convert Xls to Txt -> Name der Menüzeile
            .OnAction = main_XlsToTxt         ' Aktion ausführen
            .BeginGroup = True                 -> Trennlinie erzeugen
        End With
End Sub

Das Excel-Addin habe ich unter Extras-->Addins-Manager aktiviert, aber ich bekomme kein Menü.
Erst wenn ich in die VB-Entwicklungsumgebung wechsle und dort obigen Code starte erscheint das
Menü. Sobald ich Excel schließe und wieder starte ist der Menüeintrag auch nicht mehr vorhanden.

Wie kann ich einen permanenten Menüeintrag beim Starten des Excel-Addins erzeugen?
 
  • #2
Hallo kukris,

beim Excel-Add-In funktioniert das etwas anders als bei normalen Mappen.

Schreib erstmal eine Sub, die dir den Menü-Eintrag erstellt.
Also z.B.
Code:
Sub MeinMenuEintragErstellen()
...
End Sub
Diese Funktion sollte auch prüfen, ob der Menu-Eintrag schon vorhanden ist , sonst stapeln sich die im Menu  ;D

Dann solltest Du dich entscheiden, ob der Menü-Eintrag dauerhaft (temporary:=False) sein soll oder temporär(temporary:=True). Temporär hiesse, er wird beim Beenden von Excel automatische entfernt. Bei->dauerhaft' solltest Du eine 2. Sub MeinMenuEintragLoeschen () erstellen, die den Menu-Punkt wieder entfernt, so dass wenn du das AddIn entferntst, Excel wieder ohne den Menu-Eintrag startet.

Die Ereignis-Prozedur, die beim Öffnen der AddIns ausgelöst wird, heisst Auto_Open. Also muß in einem Modul deines AddIn soetwas stehen wie
Code:
Public Sub Auto_Open()
    Call MeinMenuEintragErstellen()
End Sub
Beim Schliessen wird Auto_Close() durchlaufen.
Code:
Public Sub Auto_Close()
    Call MeinMenuEintragLoeschen()
End Sub

Gruß Matjes :)
 
  • #3
Danke dir. Mit Public Sub Auto_Open() hat funktioniert das Ganze.
 
Thema:

Beim Starten von Excel-Addin Menüeintrag aktivieren

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben