15. juni 2004 - 09:31 Der er 9 kommentarer og
2 løsninger

Global Add-In - AutoExit - Menu Delete

Jeg har lavet en Global Add-In som er placeret i Word’s Startup bibliotek.

I AutoExec proceduren danner jeg et menupunkt via msoControlPopup, som placeres til højre for ”Help”, hvilket virker fint.

Option Explicit
Private mcbMenu As CommandBar
Private mcbpPop As CommandBarPopup
Private Const mstrMenuName As String = "Test"

Public Sub AutoExec()
    CreateMenu
End Sub

Private Sub CreateMenu()
    DeleteMenu
    On Error Resume Next
    Set mcbMenu = CommandBars.ActiveMenuBar
    Set mcbpPop = mcbMenu.Controls.Add(Type:=msoControlPopup,
Temporary:=True)
    With mcbpPop
        .Caption = mstrMenuName
        .Enabled = True
        .Visible = True
        .OnAction = "DoTheJob"
    End With
End Sub

Privat Sub DoTheJob()
    MsgBox “Du har trykket på menupunktet”
End Sub

I AutoExit vil jeg slette mit menupunkt (virker ikke)

Public Sub AutoExit()
    DeleteMenu
End Sub

Private Sub DeleteMenu()
    On Error Resume Next
    mcbMenu.Controls(mstrMenuName).Delete
End Sub

Jeg har med en MsgBox testet at AutoExit reagerer, men efter jeg lukker Word og fjerner den globale add-in, og åbner Word igen, så findes menupunktet stadig til højre for hjælp.

Jeg har forsøgt at erstatte
mcbMenu.Controls(mstrMenuName).Delete
med
CommandBars.ActiveMenuBar.Controls(mstrMenuName).Delete
og
CommandBars("Menu Bar").Controls(mstrMenuName).Delete

Jeg kan ikke bruge Reset, fordi andre globale skabeloner har oprettet deres menupunkter på samme værktøjslinie.

Jeg har kun brug for svar fra brugere, som kender forskellen på en global skabelon og en almindelig skabelon, da der er forskel på, hvordan disse reagerer og styres.

Hvordan sikrer jeg at jeg får dette menupunkt slettet igen……??
Avatar billede rvm Nybegynder
15. juni 2004 - 09:48 #1
Jeg kigger på det :-)

Det mærkelige er at jeg faktisk kan se at den slette menupunktet, men at det kommer igen ved start af word -  hmmm...
15. juni 2004 - 10:05 #2
Ja, det er lidt underligt, men nu er jeg da blevet klogere.....

Når jeg har slettet den globale Add-In, og åbner word igen, så er menupunktet der stadig.......

Lukker Word
Sletter Normal.dot
Åbner Word, og lader Word danne en ny normal.dot

Menupunktet er væk....
Avatar billede rvm Nybegynder
15. juni 2004 - 10:09 #3
men så har du jo Reset værktøjslinierne - og det ville du jo ikke...
15. juni 2004 - 10:11 #4
Hmm - hvis man vælger
View / Toolbars / Customize
på fanebladet Toolbars markerer "Menu Bar" og trykker på kanppen Reset, så kan man opleve, at man kan nulstille "Menu Bar" for enten Normal.dot eller den skabelon man har åbnet.... mon man med kode kan komme omkring at slette menupunktet både for skabelonen og for normal.dot.......
15. juni 2004 - 10:28 #5
jeg må gerne lege med Reset på min egen pc... var jo blot for at teste... og nu ved jeg at menupunktet, som jeg gerne vil slette..... ja det ligger i normal.dot
Avatar billede rvm Nybegynder
15. juni 2004 - 10:33 #6
Hej Flemming - jeg tror du skal tænke anderledes - f.eks. behøver du ikke at oprette menupunktet via kode til det som jeg ser. Du skal i stedet lige menupunket i din dot-fil - så vil den fremmkomme automatisk, når den åbnes (og det er jo ved start af Word, når du ligger .dot filen i opstartsbiblioteket) og forsvinde automatisk, når din .dot fil ikke længere er åben.
15. juni 2004 - 10:39 #7
Ja, det er rigtigt, at hvis den laves på den måde, så vil den forsvinde når skabelonen ikke er tilgængelig længere. Men så siger min logik også, at når det kan lykkes sådan, så kan det også lykkedes med kode....... og da menupunktet bliver pænt stort, så er det væsentligt nemmere at administrere og vedligeholde via kode.

Jeg VIL ha en kode løsning *g*
15. juni 2004 - 11:06 #8
ØV - NormalTemplate.Application.CommandBars("Menu Bar").Controls(mstrMenuName).Delete virker heller ikke...
16. juni 2004 - 23:15 #9
Løsningen er Application.CustomizationContext = ThisDocument
Kig i VBA-hjælpen for forståelse.
Avatar billede rvm Nybegynder
17. juni 2004 - 08:22 #10
Så blev vi alle klogere :-)
17. juni 2004 - 10:54 #11
Ja - dejligt ;-)

Med denne løsning, hvor der kører en makro inden brugeren får lov til at arbejde i Word, der er det en god ide, at slutte af med "ThisDocument.Saved = True" hvis ikke man vil have at brugeren skal promptes for "Save changes in xxxx?" (altså i den globale add-in)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Tag et kursus i Word og øg effektiviteten

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester