Hej, Jag kom just på en lösning på problemet själv.Fånga event för click på CommandBarControl
Jag bygger på en COM Add-In för Outlook och vill ha ett menyval i Verktygsmenyn som öppnar ett formulär.
Problemet är att jag inte lyckas fånga någon händelse när jag klickar på det nya menyvalet. Övriga händelser t.ex. klick på en CommandBarButton i Outlook fångas lätt genom att deklarera dem som "WithEvents"-variabler i Add-In designers och det var det jag hoppades kunna göra med CommandBarControl också men misslyckas.
Det enda som verkar finnas är en onAction-property, men vad jag förstår så handlar det om att anropa ett makro och det är tyvärr inte godtagbart för den lösning jag gör.
Någon som kan hjälpa mig???
Så här skapar jag menyvalet:
<code>
Dim objControls As Office.CommandBarControls
Dim objMenuBar As Office.CommandBarPopup
Dim objControl As Office.CommandBarControl
Dim i As Long
Dim lMax As Long
Set objControls = objOutlook.ActiveExplorer.CommandBars("Menu Bar").Controls
lMax = objControls.Count
For i = 1 To lMax
Set objMenuBar = objControls.Item(i)
If objMenuBar.ID = 30007 Then
Set objControl = objMenuBar.Controls.Add(, , , , True)
With objControl
.Caption = "Min menyrad"
.Visible = True
.Enabled = True
End With
Exit For
End If
Next i
</code>
Mvh
/BosseSv: Fånga event för click på CommandBarControl
<code>
Private WithEvents m_objToolMenuItem As Office.CommandBarButton
Public Sub AssignTool()
Set objToolMenuItem = GetToolsMenu
End Sub
Private Function GetToolsMenu(objOutlook As Outlook.Application, ByVal sProgID As String) As Office.CommandBarControl
Dim objControls As Office.CommandBarControls
Dim objMenuBar As Office.CommandBarPopup
Dim objControl As Office.CommandBarControl
Dim i As Long
Dim lMax As Long
Set objControls = objOutlook.ActiveExplorer.CommandBars("Menu Bar").Controls
lMax = objControls.Count
For i = 1 To lMax
Set objMenuBar = objControls.Item(i)
If objMenuBar.ID = 30007 Then
Set objControl = objMenuBar.Controls.Add(, , , , True)
With objControl
.Caption = "Min menyrad"
.Visible = True
.Enabled = True
End With
Exit For
End If
Next i
Set GetToolsMenu = objControl
</code>
Trixet var alltså att tilldela en CommandBarControl till en CommandBarButton (se metoden AssignTool()). För mig låter detta tokigt, men det fungerar.
Är det någon som vet att det finns någon fara med att göra så här så lägg in ett inlägg.
Mvh
/Bosse