Avatar billede Slettet bruger
09. juli 2008 - 15:27 Der er 4 kommentarer og
1 løsning

Slette CommandBars i Word

Funktionen herunder sletter alle CommandBars med navnet "BTReport" for dernæst at oprette én CommandBar med samme navn. På denne måde sikrer jeg mig, at jeg kun har en CommandBar med dette navn og når funktionen bliver kørt, opdateres denne til at have de nyeste knapper.

Hvis jeg genstarter Word, viser det sig, at CommandBar ikke er blevet slettet. Det lader til, at kun oprettelse af CommandBars gemmes i Normal.dot og ikke sletningen, hvilket resulterer i, jeg nu har 30 identiske CommandBars :-(

Hvis jeg manuelt sletter CommandBars (Tools -> Customize -> Toolbars), har det samme effekt - de slettede CommandBars vises efter Word genstartes.

Word 2003 (11.8215.8202) SP3

Const BAR_NAME = "BTReport"
Function installBTReport()
    Dim item As CommandBar
    For Each item In CommandBars
        If item.name = BAR_NAME Then
            item.Delete
        End If
    Next
   
    Dim customBar As CommandBar
   
    Set customBar = CommandBars.Add(BAR_NAME)
    With customBar.Controls.Add(msoControlButton)
        .Caption = "Create BT Report"
        .Style = Office.MsoButtonStyle.msoButtonCaption
        .OnAction = "createBTReport"
    End With
    customBar.Visible = True
    customBar.Position = msoBarTop
End Function

/1
Avatar billede Lene Fredborg Ekspert
09. juli 2008 - 15:47 #1
I forbindelse med sletning og oprettelse af commandbars og controls i commandbars er det meget vigtigt, at du først fortæller Word via din kode, hvor ændringerne skal laves. Det gør du ved at sætte CustomizationContext. Eksempel:

Hvis ændringerne skal laves i Normal.dot, så indsæt denne line _før_ den kode, der ændrer noget:

CustomizationContext = NormalTemplate

Du kan læse mere om CustomizationContext i hjælpen i VBA.
Avatar billede Lene Fredborg Ekspert
09. juli 2008 - 15:51 #2
...og lige en ting mere: Det er også klogt aktivt at sørge for, at dine ændringer bliver gemt. De problemer, du ser, kunne tyde på, at dette ikke sker. Du kan gemme via VBA. F.eks. vil:

Normaltemplate.Save

gemme Normal.dot

Hvis det f.eks. er en anden skabelon, "MyTemplate.dot", ville det være:

Templates("MyTemplate.dot").Save
Avatar billede Slettet bruger
09. juli 2008 - 16:42 #3
Jeg prøvede dette uden held:

Const BAR_NAME = "BTReport"
Function installBTReport()
    CustomizationContext = NormalTemplate
   
    Dim item As CommandBar
    For Each item In CommandBars
        If item.name = BAR_NAME Then
            item.Delete
        End If
    Next
   
    Dim customBar As CommandBar
   
    Set customBar = CommandBars.Add(BAR_NAME)
    With customBar.Controls.Add(msoControlButton)
        .Caption = "Create BT Report"
        .Style = Office.MsoButtonStyle.msoButtonCaption
        .OnAction = "createBTReport"
    End With
    customBar.Visible = True
    customBar.Position = msoBarTop
   
    NormalTemplate.Save
End Function

Ved at søge på CustomizationContext, har jeg fundet frem til, hvor jeg får slettet de toolbars: Tools -> Template and Add-Ins... -> Organizer -> Toolbars.

Jeg optog en macro, da jeg slettede dem, og er nået frem til denne fremgangsmåde:
Do While True
  On Error GoTo errorHandler
  Application.OrganizerDelete NormalTemplate, BAR_NAME, wdOrganizerObjectCommandBars
Loop
errorHandler:
On Error Resume Next

Tak for hjælpen. Jeg havde stadig tåget rundt på google, hvis jeg ikke havde haft noget at gå efter, så læg et svar.

/1
Avatar billede Lene Fredborg Ekspert
09. juli 2008 - 17:31 #4
Godt at du fandt en løsning. Min forklaring var ikke så detaljeret, som den kunne have været. Når man skal slette noget, vil det kun virke at sætte CustomizationContext til NormalTemplate hvis det, der skal slettes, hører til Normal.dot - hvis det er gemt i en anden skabelon, er det den, der skal sættes som CustomizationContext.

Når du først har fået ryddet op i sagerne og har fjernet alle de commandbars, der var havnet rundt omkring, skulle du kunne styre det.

Når du opretter commandbars mm., bliver de gemt i den aktuelle CustomizationContext, og hvis du ikke selv sørger for at sætte den, kan det være hvad som helst af tilgængelige dokumenter og skabeloner - det afhænger at, hvad du ellers har foretaget dig.
Avatar billede Slettet bruger
30. juli 2008 - 15:38 #5
Endnu engang tak for hjælpen.. Jeg glemte at lukke spørgsmålet.
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
Kurser inden for grundlæggende programmering

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