VSTO: Check om et menupunkt i Excel eksisterer inden det oprettes
Jeg har leget lidt med Visual Studio Tools for Office, og prøvt at implementere et eksempel fra Microsoft på at lave et nyt menupunkt i Excel. Problemet er at menupunktet bliver oprættet/lagt til, hver gang jeg åbner den aktuelle WorkBook med kode i, uden at koden chekcer om menupunktet allerede eksisterer.Resultatet er at jeg får en ny version af menupunktet hver gang jeg lukker og åbner denne Workbook.
Finnes det en elegant måde at checke om et givet menupunkt fungerer på?
Jeg har følgende kode:
Private Sub InitMenuBarItems(ByVal Caption As String)
Try
MainMenuBar = ThisApplication.CommandBars( _
"Worksheet Menu Bar")
MenuBarItem = MainMenuBar.Controls.Add( _
Office.MsoControlType.msoControlPopup, Temporary:=True)
MenuBarItem.Caption = Caption
Catch ex As Exception
MessageBox.Show(ex.Message, _
ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Jeg havde håbet på at kunne checke:
If Not IsNothing(MainMenuBar.Controls.Item(Caption)) then
MenuBarItem = MainMenuBar.Controls.Add( _
Office.MsoControlType.msoControlPopup, Temporary:=True)
MenuBarItem.Caption = Caption
End If
Men jeg får en fejl på denne (Run-time exception thrown : System.ArgumentException - The parameter is incorrect.) når menupunktet ikke findes, så det er nok ikke IsNothing jeg skal bruge. Jeg ved jeg kan bruge Try Catch for at undgå fejl, og på den måde opdage om et bestemt menu item findes, men det jeg søger er en måde at chekce om et menu item findes uden at generere en fejl. Kan det lade sig gøre?
