mark-o
Goto Top

Outlook-Menüleiste per VBA funktioniert nicht

Hallo,

ich würde mir gerne eine eigene Menüleiste mit Combo-Box in Outlook 2003 programmieren, dazu gibt es auch eine Hilfeseite bei Microsoft:

http://www.microsoft.com/germany/msdn/library/office/MehrZumThemaProgra ...

Wenn ich nachstehendes Script (minimale Veränderungen aus der MS-Seite) ausführe, da bleibt es mir an dieser Zeile mit Laufzeitfehler 438 (Objekt unterstützt diese Eigenschaft oder Methode nicht) hängen. Und das bei OL2003 und OL2000:

' Die nächste Codezeile ersetzen durch:
Set objCommandBarComboBox = _
Application.CommandBars.Item(strCommandBarName).Controls.Add(msoControlComboBox)
'<- Für Outlook ÄNDERUNG: HIER AKTIVIERT


An was könnte das liegen?
Danke für jede Hilfe
Mark

Public Function AddComboBoxToCommandBar(ByVal strCommandBarName As String, _
ByVal strComboBoxCaption As String, _
ByRef strChoices() As String) As Boolean
' Zweck: Fügt einer Befehlsleiste ein Kombinationsfeld hinzu.
' Akzeptiert:
' strCommandBarName: Der Name der Befehlsleiste zum Hinzufügen des Kombinationsfeldes.
' strChoices(): Ein Optionsarray für das Kombinationsfeld.
' Rückgabe: TRUE, wenn das Kombinationsfeld erfolgreich der Befehlsleiste hinzugefügt wurde.
Dim objCommandBarControl As Office.CommandBarControl
Dim objCommandBarComboBox As Office.CommandBarComboBox
Dim varChoice As Variant
'On Error GoTo AddComboBoxToCommandBar_Err ÄNDERUNG: ALS KOMMENTAR, DAMIT FEHLERMELDUNG ERSCHEINT
' Alle zuvor hinzugefügten Instanzen dieses Kombinationsfeldes löschen.
' Die nächste Codezeile ersetzen durch:
For Each objCommandBarControl In _
Application.ActiveExplorer.CommandBars.Item(strCommandBarName).Controls
'<- Für Outlook ÄNDERUNG: HIER AKTIVIERT
' For Each objCommandBarControl In _
' Application.VBE.CommandBars.Item(strCommandBarName).Controls _
<- Für Visual Basic-Editor
'For Each objCommandBarControl In Application.CommandBars.Item(strCommandBarName).Controls
If objCommandBarControl.Caption = strComboBoxCaption Then
objCommandBarControl.Delete
End If
Next objCommandBarControl
' Das Kombinationsfeld erstellen.


' Die nächste Codezeile ersetzen durch:
Set objCommandBarComboBox = _
Application.CommandBars.Item(strCommandBarName).Controls.Add(msoControlComboBox)
'<- Für Outlook ÄNDERUNG: HIER AKTIVIERT


' Set objCommandBarComboBox = _
' Application.CommandBars.Item(strCommandBarName).Controls.Add(msoControlComboBox) _
<- Für Visual Basic-Editor
'Set objCommandBarComboBox = _
Application.CommandBars.Item(strCommandBarName).Controls.Add(msoControlComboBox)
objCommandBarComboBox.Caption = strComboBoxCaption
For Each varChoice In strChoices
objCommandBarComboBox.AddItem varChoice
Next varChoice
AddComboBoxToCommandBar_End:
AddComboBoxToCommandBar = True
Exit Function
AddComboBoxToCommandBar_Err:
AddComboBoxToCommandBar = False
End Function


Public Sub TestAddComboBoxToCommandBar()
' Zweck: Testet die AddComboBoxToCommandBar-Funktion.
Dim strChoices(4) As String
strChoices(1) = "Vanilla"
strChoices(2) = "Chocolate"
strChoices(3) = "Strawberry"
strChoices(4) = "Other"
If AddComboBoxToCommandBar("Tools", "Favorite Ice Cream", _
strChoices) = True Then
MsgBox "Das Kombinationsfeld wurde erfolgreich hinzugefügt."
Else
MsgBox "Das Kombinationsfeld konnte nicht hinzugefügt werden."
End If
End Sub

Content-Key: 82187

Url: https://administrator.de/contentid/82187

Printed on: April 25, 2024 at 19:04 o'clock

Member: Mark-O
Mark-O Jun 02, 2008 at 11:35:28 (UTC)
Goto Top
Bin das Thema nach Wochen nochmals angegangen. Hier die unausgearbeitete Lösung für Outlook 2003.

Gruß
Mark

Private Sub Application_Startup()
Dim customBar As CommandBar
Dim icon As CommandBarButton
Dim ctlCBarCombo As CommandBarComboBox
Dim ctlCBarCEdit As CommandBarControl


On Error Resume Next
Application.ActiveExplorer.CommandBars("Custom").Delete
Err.Clear

Set customBar = Application.ActiveExplorer.CommandBars.Add("Custom", msoBarTop, temporary:=True)

Set ctlCBarCombo = customBar.Controls.Add(Type:=msoControlComboBox, temporary:=True)
With ctlCBarCombo
.AddItem "Red"
.AddItem "Green"
.AddItem "Blue"
.ListIndex = 1
.Caption = "Combo Box"
'.Clear
'.RemoveItem
'.DropDownLines = 3 'Anzahl Zeilen von Combobox
'.Width = 330 'Breite der ComboBox, evtl. anpassen
'.DropDownWidth = 330 'Breite der Anzeige, evtl. anpassen
'.ListCount 'gibt die Anzahl der Einträge wieder
.OnAction = "Project1.ThisOutlookSession.Combo"

End With


Set ctlCBarCEdit = customBar.Controls.Add(Type:=msoControlEdit, temporary:=True)
With ctlCBarCEdit

.Caption = "ControlEdit"
.Text = "Red"
.Style = msoComboLabel
.TooltipText = "Test Edit box"
.OnAction = "Project1.ThisOutlookSession.die_EditBox"

End With


Set icon = customBar.Controls.Add(Type:=msoControlButton, temporary:=True)
icon.Caption = "Button" '<-- mit Icon.ID´s hat Outlook Probleme - sind leer
icon.TooltipText = "Neues Icon"
icon.OnAction = "Project1.ThisOutlookSession.Meldung"


customBar.Visible = True

End Sub
Private Sub Application_Quit()

On Error Resume Next
Application.ActiveExplorer.CommandBars("Custom").Delete

End Sub

Sub Meldung()
Dim icon As CommandBarButton
Dim A As String
A = Application.ActiveExplorer.CommandBars("Custom").Controls("Button").Caption
MsgBox "ControlButton heißt " & A
End Sub
Sub Combo()
Dim ctlCBarCombo As CommandBarComboBox
Dim A As String
A = Application.ActiveExplorer.CommandBars("Custom").Controls("Combo Box").Text
MsgBox A & " steht da."
End Sub
Sub die_EditBox()
Dim ctlCBarCEdit As CommandBarControl
Dim A As String
A = Application.ActiveExplorer.CommandBars("Custom").Controls("ControlEdit").Text
MsgBox A & " steht in der EditBox."
End Sub