encryptedheart
asked on
Error in MyButton.Delete() in OnBeginShutdown event when using outlook comaddins
Hi,
I developed small com-addins(VB6) to create 2 buttons on Startup & to remove the button on OnBeginShutdown.
Code Snippet:
Dim WithEvents cmdSaveinDM As Office.CommandBarButton
Set mnuOpenfrmDM = oHostApp.CommandBars.FindC ontrol(Tag :="Open from DM")
cmdOpenfrmDM.Delete
above code removes Menu button when exit the application for Word,Excel,Powerpoint etc but except for Outlook.
even i tried with
Dim WithEvents cmdSaveinDM As Office.CommandBarButton
Set mnuOpenfrmDM = oHostApp.ActiveInspector.C ommandBars .FindContr ol(Tag:="O pen from DM")
cmdOpenfrmDM.Delete
still am getting error says object doesnt support.
Can anyone help me in this case????
I developed small com-addins(VB6) to create 2 buttons on Startup & to remove the button on OnBeginShutdown.
Code Snippet:
Dim WithEvents cmdSaveinDM As Office.CommandBarButton
Set mnuOpenfrmDM = oHostApp.CommandBars.FindC
cmdOpenfrmDM.Delete
above code removes Menu button when exit the application for Word,Excel,Powerpoint etc but except for Outlook.
even i tried with
Dim WithEvents cmdSaveinDM As Office.CommandBarButton
Set mnuOpenfrmDM = oHostApp.ActiveInspector.C
cmdOpenfrmDM.Delete
still am getting error says object doesnt support.
Can anyone help me in this case????
ASKER
Hi,
Am getting error in the line
Set mnuOpenfrmDM = oHostApp.CommandBars.FindC ontrol(Tag :="Open from DM")
I declared this button with events for different purpose.
Even i tried to set temporary:true as arguement while creating new button, it doesnt works.
I tried
Set mnuOpenfrmDM = oHostApp.ActiveExplorer.Co mmandBars. FindContro l(Tag:="Op en from DM")
no use.
still getting same ..................
Am getting error in the line
Set mnuOpenfrmDM = oHostApp.CommandBars.FindC
I declared this button with events for different purpose.
Even i tried to set temporary:true as arguement while creating new button, it doesnt works.
I tried
Set mnuOpenfrmDM = oHostApp.ActiveExplorer.Co
no use.
still getting same ..................
Hmm! Interesting..
I just added one to the Tools menu using:
With oHostApp.ActiveExplorer.Co mmandBars( "Tools").C ontrols.Ad d(msoContr olButton, , , , True)
.Tag = "Open from DM"
.Caption = "Hello!"
End With
Then used
Dim mnuOpenfrmDM As CommandBarControl
Set mnuOpenfrmDM = oHostApp.ActiveExplorer.Co mmandBars. FindContro l(Tag:="Op en from DM")
If Not mnuOpenfrmDM Is Nothing Then
mnuOpenfrmDM.Delete
Else
MsgBox "mnuOpenfrmDM is nothing"
End If
And it did get deleted.. when I ran it a second time I got the message box.
Since you're the one adding the control, why use FindControl? Why not specify where it is and delete it that way? In my case (in the tools menu) :
Set mnuOpenfrmDM = oHostApp.ActiveExplorer.Co mmandBars( "Menu Bar").Controls("Tools").Co ntrols("He llo!")
Though usually in my com add-ins, I add a separate menu after Help for any buttons, and then just delete the whole new menu.
I just added one to the Tools menu using:
With oHostApp.ActiveExplorer.Co
.Tag = "Open from DM"
.Caption = "Hello!"
End With
Then used
Dim mnuOpenfrmDM As CommandBarControl
Set mnuOpenfrmDM = oHostApp.ActiveExplorer.Co
If Not mnuOpenfrmDM Is Nothing Then
mnuOpenfrmDM.Delete
Else
MsgBox "mnuOpenfrmDM is nothing"
End If
And it did get deleted.. when I ran it a second time I got the message box.
Since you're the one adding the control, why use FindControl? Why not specify where it is and delete it that way? In my case (in the tools menu) :
Set mnuOpenfrmDM = oHostApp.ActiveExplorer.Co
Though usually in my com add-ins, I add a separate menu after Help for any buttons, and then just delete the whole new menu.
ASKER
Hi,
directly i tried to acces like
MsgBox oHostApp.ActiveExplorer.Co mmandBars. Item("File ").Control s.Item("Op en from DM").Tag
still getting same error
directly i tried to acces like
MsgBox oHostApp.ActiveExplorer.Co
still getting same error
You would still have to reference the "Menu Bar" commandbar. If you want to use the Item property like that, it would be:
MsgBox oHostApp.ActiveExplorer.Co mmandBars. Item("Menu Bar").Controls.Item("File" ).Controls .Item("Ope n from DM").Tag
Though it could also be written shorter, as
MsgBox oHostApp.ActiveExplorer.Co mmandBars( "Menu Bar").Controls("File").Con trols("Ope n from DM").Tag
Matt
MsgBox oHostApp.ActiveExplorer.Co
Though it could also be written shorter, as
MsgBox oHostApp.ActiveExplorer.Co
Matt
ASKER
Hey i got the solution by using temporary flag to true.
actually my code written in a way if button already exist then not to insert the button,
so earlier i created button without temporary flag is set to true.
for the i should manually remove it.
now when i tried with that, its working fine.
thanks for your effort to help me.
actually my code written in a way if button already exist then not to insert the button,
so earlier i created button without temporary flag is set to true.
for the i should manually remove it.
now when i tried with that, its working fine.
thanks for your effort to help me.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
You don't specify which line the object doesn't support, but if you're just removing the buttons, why use WithEvents? Are you in a class module?
When I add my buttons from a COM add-in, I just set the Temporary argument to True while adding them. And at the top of my RemoveButtons sub (called from OnDisconnect) I just put On Error Resume Next (since the buttons will be removed when it closes, and this way I won't get the random error like this when outlook disagrees with my code).
Lastly, are you sure you want ActiveInspector and not ActiveExplorer? Both have the commandbars object, though the Explorer is the more common place to put buttons, especially if you'll be calling them from OnBeginShutdown. If you're adding them to an inspector object, just make them temporary as inspectors are closed frequently.
My opinion at least :)
Matt