Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Outlook VBA: Menü wieder löschen

63 views
Skip to first unread message

Beck, Alwin

unread,
Mar 13, 2009, 11:41:12 AM3/13/09
to
Outlook 2003

Hallo,
beim Start von Outlook erzeuge ich mein Menü über folg. Code :

Set MenuBar = Application.ActiveExplorer.CommandBars("Menu Bar")

Set Menu = MenuBar.Controls.Add(Type:=msoControlPopup)
Menu.Caption = "MeinMenü"

Set Control = Menu.Controls.Add
With Control
.Caption = "Mail: Aktualisierung KK"
.OnAction = "MailSenden_KK"
.Style = msoButtonCaption
End With

Wenn ich dann Outlook beende und wieder starte wird wieder ein
neues Menü erstellt usw.
Ich müsste doch beim Beenden dann das Menü wieder löschen können.
Wie mache ich das ?

Danke
Gruß
albe

Beck, Alwin

unread,
Mar 13, 2009, 12:42:06 PM3/13/09
to
Hallo,
habe nun folg. ausprobiert, jedoch bei jedem Neustart kommen
die Menüpunkte immer wieder dazu - was stimmt hier nicht
bezüglich auf die Prüfung ob der Eintrag shcon vorhanden ist ?

Private Sub Application_Startup()

'ERstellt ein neues Menü mit den Einträgen

Dim cbar As CommandBar
Dim ctlcbar As CommandBarControl
Dim ctlNew01 As CommandBarControl
Dim ctlNew02 As CommandBarControl
Dim ctlNew03 As CommandBarControl
Dim ctlNew04 As CommandBarControl


' Verweis auf die Menüleiste setzen
Set cbar = ActiveExplorer.CommandBars("Menu Bar")
On Error Resume Next
Set ctlcbar = cbar.Controls("&MeinMenü")
If ctlcbar Is Nothing Then
Set ctlcbar = cbar.Controls.Add(Type:=msoControlPopup, ID:=1)
End If

With ctlcbar
.Caption = "&MeinMenü"
End With
' Prüfen, ob Eintrag bereits vorhanden ist.
Set ctlNew01 = ctlcbar.Controls("Neuer Eintrag")
' oder per FindControl suchen
On Error GoTo 0

If ctlNew01 Is Nothing Then
Set ctlNew01 = cbar.FindControl(Type:=msoControlButton, Tag:="Neuer
Eintrag", ID:=1, Recursive:=True)
End If
If ctlNew01 Is Nothing Then
Set ctlNew01 = ctlcbar.Controls.Add(Type:=msoControlButton, ID:=1)
End If


With ctlNew01
.BeginGroup = True ' Trennt den Eintrag ab
' mit FaceId kann ein integrietes Symbol verwendet werden
.FaceId = 3817
.Caption = "Mail: Update Krankenkassen"
' Vollständiger Verweis auf das Makro
.OnAction = "MailSenden_Link_KK"
' optional z.B. zur Identifizierung
.Tag = "NeuerEintrag"
.TooltipText = "Sendet eine E-Mail an Personalbuchhaltung
Aktualisierung Krankenkassen"
End With

If ctlNew02 Is Nothing Then
Set ctlNew02 = cbar.FindControl(Type:=msoControlButton, Tag:="Neuer
Eintrag", ID:=1, Recursive:=True)
End If
If ctlNew02 Is Nothing Then
Set ctlNew02 = ctlcbar.Controls.Add(Type:=msoControlButton, ID:=1)
End If


With ctlNew02
.BeginGroup = True ' Trennt den Eintrag ab
' mit FaceId kann ein integrietes Symbol verwendet werden
.FaceId = 3817
.Caption = "Mail: Update Lohnprogramm"
' Vollständiger Verweis auf das Makro
.OnAction = "MailSenden_Link_PGMUPDATE"
' optional z.B. zur Identifizierung
.Tag = "NeuerEintrag"
.TooltipText = "Sendet eine E-Mail an Personalbuchhaltung Update
Lohnsoftware"
End With

If ctlNew03 Is Nothing Then
Set ctlNew03 = cbar.FindControl(Type:=msoControlButton, Tag:="Neuer
Eintrag", ID:=1, Recursive:=True)
End If
If ctlNew03 Is Nothing Then
Set ctlNew03 = ctlcbar.Controls.Add(Type:=msoControlButton, ID:=1)
End If


With ctlNew03
.BeginGroup = True ' Trennt den Eintrag ab
' mit FaceId kann ein integrietes Symbol verwendet werden
.FaceId = 3817
.Caption = "Mail: Zeitnachtrag"
' Vollständiger Verweis auf das Makro
.OnAction = "MailSenden_Zeitnachtrag"
' optional z.B. zur Identifizierung
.Tag = "NeuerEintrag"
.TooltipText = "Sendet eine E-Mail an Personalbuchhaltung
Zeitnachtrag"
End With


If ctlNew04 Is Nothing Then
Set ctlNew04 = cbar.FindControl(Type:=msoControlButton, Tag:="Neuer
Eintrag", ID:=1, Recursive:=True)
End If
If ctlNew04 Is Nothing Then
Set ctlNew04 = ctlcbar.Controls.Add(Type:=msoControlButton, ID:=1)
End If

With ctlNew04
.BeginGroup = True ' Trennt den Eintrag ab
' mit FaceId kann ein integrietes Symbol verwendet werden
.FaceId = 3817
.Caption = "Mail User: Programmupdate"
' Vollständiger Verweis auf das Makro
.OnAction = "MailSenden_User_PGMUPDATE"
' optional z.B. zur Identifizierung
.Tag = "NeuerEintrag"
.TooltipText = "Sendet eine E-Mail an Benutzer bezüglich
Programmupdate"
End With


' Eintrag anzeigen
cbar.Visible = True
End Sub

Danke
Gruß
Albe

Michael Bauer [MVP - Outlook]

unread,
Mar 13, 2009, 3:43:57 PM3/13/09
to

Hallo,

schau Dir das Beispiel bitte an:
http://www.vboffice.net/sample.html?mnu=2&pub=6&smp=16&cmd=showitem

--
Viele Gruesse
Michael Bauer - MVP Outlook

: Outlook-Kategorien? Category Manager ist die Lösung
: VBOffice Reporter für Datenanalyse & Berichte
: <http://www.vboffice.net/product.html?pub=6>

0 new messages