Avatar billede mira96ac Praktikant
19. april 2007 - 11:38 Der er 21 kommentarer og
1 løsning

Menu i Word

Hejsa

Jeg har fundet følgende kode der opretter et nyt menupunkt i Word. Men hvordan definerer jeg mit punkt 2 til at være en controlpopup, dvs. et punkt når man holder musen over som kommer alle underpunkterne frem ???

Nogen som kan hjælpe.

Option Explicit
Public cbMenu As CommandBar
Public cbPopMenu As CommandBarPopup
Public cbSubMenu As CommandBarPopup
Public Const strMyMenuName As String = "Min menu"

Sub AutoExec()
'************************
    Fjern_MyMenu
'Sætter cbMenu = den nuværende menu
    Set cbMenu = CommandBars.ActiveMenuBar
   
    'cbPopMenu bliver tilføjet til den nuværende menu
    Set cbPopMenu = cbMenu.Controls.Add(Type:=msoControlPoup, Temporary:=True)
        cbPopMenu.Caption = strMyMenuName

'************************
    'Sæt menupunkter på menu\'en
    'MakroKald,PunktNavn,MakroKald,Face,Index,Streg før
    MyPopMenu "&Punkt 1", "Item01", 85, 1, False
    MySubMenu "&Punkt 2"
    MyPopMenu "&Et underpunkt", "Item02", 85, 1, False
End Sub

Private Sub MyPopMenu(MyCaption, MyOnAction As String, MyFaceId, iIndex As Integer, bGroup As Boolean)
Dim MyMenuItem As CommandBarButton
    Set MyMenuItem = cbPopMenu.Controls.Add(Type:=msoControlButton, ID:=iIndex)
    With MyMenuItem
        .Caption = MyCaption
        '.TooltipText = MyToolTip
        .Style = msoButtonIconAndCaption
        .OnAction = MyOnAction
        .FaceId = MyFaceId
        .BeginGroup = False
    End With
End Sub
Private Sub MySubMenu(MyCaption)
Dim MyMenuItem As CommandBarPopup
    Set MyMenuItem = cbSubMenu.Controls.Add(Type:=msoControlPopup)
    With MyMenuItem
        .Caption = MyCaption
             
    End With
End Sub


Sub Fjern_MyMenu()
Dim cbMenu As CommandBar
    On Error Resume Next

'Sletter menuen
    Set cbMenu = CommandBars.ActiveMenuBar
        cbMenu.Controls(strMyMenuName).Delete
End Sub

Private Sub Item01()
    Documents.Add Template:="c:\skbelon.dot", _
        NewTemplate:=False, DocumentType:=0
End Sub
Private Sub Item02()
    Documents.Add Template:="c:\skbelon.dot", _
        NewTemplate:=False, DocumentType:=0
End Sub
Avatar billede rvm Nybegynder
19. april 2007 - 12:35 #1
Lav ikke denne øvelse - du får en korrupt Normal.dot på et tidspunkt, når du har dannet menuen måske 20 gange...

Opret i stedet din menu manuelt i en skabelon, der placeres i Words opstartsbibliotek.
Avatar billede mira96ac Praktikant
19. april 2007 - 12:52 #2
Men den er oprettet i en skabelon som er placeret i Words-opstartsbibliotek.
Koden er placeret i et module i denne skabelon...
Avatar billede rvm Nybegynder
19. april 2007 - 14:06 #3
jep - men menuen bliver oprettet i Normal.dot. Og hvis du så oprettet menuen i skabelonen, så fejler den bare efter et stykke tid.
Avatar billede mira96ac Praktikant
19. april 2007 - 14:18 #4
OK

Se det kunne jeg ikke lure.

Du har ikke lige et stykke kode til hvordan jeg så skal gøre. Gerne med en menu hvor der er underpunkter...
Avatar billede rvm Nybegynder
19. april 2007 - 14:35 #5
Du skal ikke kode - men oprette menuen manuelt med hånden i Vis/Værktøjslinier/Tilpas/Kommandper eller Værktøsjlinier
Avatar billede mira96ac Praktikant
19. april 2007 - 14:43 #6
Men kan man så stadig putte den i en skabelon så flere brugere kan bruge den....

Altså en dot. fil man kan distribuere til flere maskiner.
Avatar billede mira96ac Praktikant
19. april 2007 - 14:50 #7
Jeg fandt lige denne side som omhandler vistnok det du beskriver.

Jeg forstår dog ikke hvordan man skal løse det.

http://www.kbalertz.com/Feedback_873017.aspx
Avatar billede mira96ac Praktikant
19. april 2007 - 15:04 #8
Er det her noget vi kan bruge.

Her bruges i hvert fald CustomizationContext som omtalt i ovenstående link

http://help.wugnet.com/office/Custom-Users-ftopict952044.html

jeg er igen ikke smart nok til at finde ud af hvordan det virker.
Avatar billede rvm Nybegynder
19. april 2007 - 17:59 #9
Du kan ikke løse det - det er en fejl i Word fra 97 versionen og til og med 2003. Den work arround de omtaler virker heller ikke.

Du kan stadig putte den i skabelon. Placer din menu i en .dot fil og placer den i brugernes words opstartsbibliotek (findes under Funktioner/Indstillinger)
Avatar billede mira96ac Praktikant
19. april 2007 - 18:40 #10
Jeg forstår stadig ikke...

Jeg kan sagtens lave et nyt menupunkt i Word via funktioner/tilpas.
Jeg kan også gemme som en skabelon.
Jeg kan gemme skabelonen i et bibliotek (startup) og pege på dette bibliotek via funktioner/indstillinger i Word.

Men menuen kommer ikke når jeg starter Word automatisk.

Gider du hjælpe lidt mere.
Avatar billede mira96ac Praktikant
19. april 2007 - 20:59 #11
Jeg synes jeg har store problemer med at få dette til at virke.

Det er lykkedes mig at oprette en menu og tildele nogle makroer til mine menupunkter. Dette er placeret i en skabelon i word/startup-biblioteket.

Men når jeg efterfølgende skal redigerer i menuen og lignende kan jeg ikke komme til det. Enten forsvinder min menu (og den kan jeg slet ikke få tilbage - selvom jeg ikke har ændret i min dot-fil) ellers får jeg alle mulige fejlmeddelelser.

Er dette virkelig den måde det skal gøres på når man vil dele en menu med andre "maskiner" via en "global" skabelon.

I Excel fungerer det jo upåklageligt via næsten den selvsamme kode som jeg først postede.
Avatar billede rvm Nybegynder
19. april 2007 - 22:05 #12
Ja - i Excel virker det upåklageligt.. bortset fra at opretter du em menu i en exce-fil, så bliver menuen ikke lukket/slettet, når du lukker filen - den bliver nemlig overført til person.xls, når du åbner filen - så derfor skal man altid i Excel have en makro i filen, der sletter menuen efter sig, når filen lukkes.

Er du sikker på du gemmer menuen i skabelonen og ikke i Normal.dot? Word er nemlig sat op til at gemme i Normal.dot. Det kan godt være lidt uigennemskueligt, hvorfor jeg faktisk i de sidste mange projekter er begyndt at lave værktøjslinier i stedet for menuer - værktøjslinier er meget nemmere at styre.
Avatar billede mira96ac Praktikant
19. april 2007 - 22:43 #13
Den version jeg har til Excel sletter også menuen når man lukker. Men derudover har jeg ikke forstand på dette. Den virker i hvert fald.

Med hensyn til Word, synes jeg bestemt jeg holdte øje med at gemme i min skabelon. Til gengæld har jeg fundet nedenstående. Det virker upåklageligt. Men mener du at det fejler på et tidspunkt ???

Option Explicit
Sub AutoExec()

CustomizationContext = ActiveDocument.AttachedTemplate

'Create Menu
Dim existingMenuBar As CommandBar
Dim newMenu As CommandBarPopup
Dim subMenu As CommandBarPopup
Dim subMenu2 As CommandBarButton
Dim subMenu3 As CommandBarButton
Set existingMenuBar = CommandBars.ActiveMenuBar

Set newMenu = existingMenuBar.Controls.Add(Type:=msoControlPopup)
With newMenu
.Caption = "Min menu"
.Visible = True
End With

'Sub Menu 01
Set subMenu = newMenu.Controls.Add(Type:=msoControlPopup)
With subMenu
.Caption = "Punkt 1"
End With
Call DoSubMenu(subMenu)

'Sub Menu 02
Set subMenu = newMenu.Controls.Add(Type:=msoControlPopup)
With subMenu
.Caption = "Punkt 2"
End With
Call DoSubMenu2(subMenu)

'Sub Menu 03
Set subMenu = newMenu.Controls.Add(Type:=msoControlPopup)
With subMenu
.Caption = "Punkt 3"
End With
Call DoSubMenu3(subMenu)

'Sub Menu 04
Set subMenu = newMenu.Controls.Add(Type:=msoControlPopup)
With subMenu
.Caption = "Punkt 4"
End With
Call DoSubMenu4(subMenu)

Set subMenu2 = newMenu.Controls.Add(Type:=msoControlButton)
With subMenu2
.Caption = "Et punkt"
.OnAction = "TopicUnhigh"
End With

Set subMenu3 = newMenu.Controls.Add(Type:=msoControlButton)
With subMenu3
.Caption = "Et andet punkt"
.OnAction = "HighAll"
End With

End Sub

Public Sub DoSubMenu(themainmenu As CommandBarPopup)
Dim themenu As CommandBarButton

Set themenu = themainmenu.Controls.Add(Type:=msoControlButton)
With themenu
.Caption = "Underpunkt"
.Style = msoButtonIconAndCaption
.faceid = 532
End With

Set themenu = themainmenu.Controls.Add(Type:=msoControlButton)
With themenu
.Caption = "Underpunkt"
.Style = msoButtonIconAndCaption
.faceid = 532
End With

Set themenu = themainmenu.Controls.Add(Type:=msoControlButton)
With themenu
.Caption = "Underpunkt"
.Style = msoButtonIconAndCaption
.faceid = 487
End With

End Sub

Public Sub DoSubMenu2(themainmenu As CommandBarPopup)
Dim themenu As CommandBarButton

Set themenu = themainmenu.Controls.Add(Type:=msoControlButton)
With themenu
.Caption = "Underpunkt"
.Style = msoButtonIconAndCaption
.faceid = 490
End With

Set themenu = themainmenu.Controls.Add(Type:=msoControlButton)
With themenu
.Caption = "Underpunkt"
.Style = msoButtonIconAndCaption
.faceid = 491
End With

Set themenu = themainmenu.Controls.Add(Type:=msoControlButton)
With themenu
.Caption = "Underpunkt"
.Style = msoButtonIconAndCaption
.faceid = 492
End With


End Sub

Public Sub DoSubMenu3(themainmenu As CommandBarPopup)
Dim themenu As CommandBarButton

Set themenu = themainmenu.Controls.Add(Type:=msoControlButton)
With themenu
.Caption = "Underpunkt"
.Style = msoButtonIconAndCaption
.faceid = 501
End With

Set themenu = themainmenu.Controls.Add(Type:=msoControlButton)
With themenu
.Caption = "Underpunkt"
.Style = msoButtonIconAndCaption
.faceid = 501
End With

Set themenu = themainmenu.Controls.Add(Type:=msoControlButton)
With themenu
.Caption = "Underpunkt"
.Style = msoButtonIconAndCaption
.faceid = 501
End With




End Sub
Public Sub DoSubMenu4(themainmenu As CommandBarPopup)
Dim themenu As CommandBarButton

Set themenu = themainmenu.Controls.Add(Type:=msoControlButton)
With themenu
.Caption = "Underpunkt"
.Style = msoButtonIconAndCaption
.faceid = 5
End With

Set themenu = themainmenu.Controls.Add(Type:=msoControlButton)
With themenu
.Caption = "Underpunkt"
.Style = msoButtonIconAndCaption
.faceid = 5
End With

Set themenu = themainmenu.Controls.Add(Type:=msoControlButton)
With themenu
.Caption = "Underpunkt"
.Style = msoButtonIconAndCaption
.faceid = 5
End With




End Sub
Avatar billede rvm Nybegynder
20. april 2007 - 08:08 #14
Ja - men prøv den bare og hold så øje med filstørrelsen på din Normal.dot og på din skabelon. Hvis de begynder at vokse, så vil de fejle efter et stykke tid.
Avatar billede mira96ac Praktikant
20. april 2007 - 08:53 #15
De er ikke vokset endnu

Men tilføjer åbner jeg en skabelon via et punkt i menuen får jeg en fejlmeddelelse vedr. Normal.dot når jeg vil lukke Word og jeg kan se at jeg ikke får fjernet menuen når Word lukker

Sådan noget besværligt møg...
Avatar billede mira96ac Praktikant
20. april 2007 - 12:39 #16
Jeg har fået det til at virke ved at gøre som du siger.

Man skal bare ikke lave manøvren med at flytte sin menulinie væk når man står i funktioner-tilpas. Så kommer den nemlig ikke igen selvom dot-filen stadig ligger i startup bibliteket.

Kom med et svar så får du selvfølgelig point.

Et lille bonusspørgsmål. Jeg har nogle userforms i Excel som starter når man åbner bestemte filer. Der er kun få felter i userformen man skal udfylde. Man skal skrive et kundenr. så søger den efter det i (på nuværende tidspunkt) en Excelfil og returnere tilsvarende kundenavn. og så gemmer den filen man har åbnet på et forudbestemt sted.

Er det "nemt" at overføre til Word. Og vil du i så fald være behjælpelig me dette. jeg opretter selvfølgelig et nyt spørgsmål med point ?
Avatar billede rvm Nybegynder
20. april 2007 - 12:46 #17
Det er nemt - man skal bare have et Excel object ind i Word koden, så man fjernstyrer Excel - så kan du hente de samme data ind i Word selvom de ligger i Excel.
Avatar billede mira96ac Praktikant
20. april 2007 - 12:56 #18
Gider du hjælpe med det ?

Det siger mig nemlig ikke lige noget...

Tak for hjælpen med dette spørgsmål
Avatar billede word-hajen Nybegynder
21. april 2007 - 19:22 #19
En lille anbefaling omkring menuer:
Det er en god idé at slette en "egen-oprettet" menu, inden man danner den, dvs. at man starter med at rydde op, så man sikrer sig, at der ikke ligger noget "gammelt skrammel" og roder (husk On Error resume next lige inden "slet-menu").

Slet også menuen, når du lukker Word - dette kan gøres i AutoExit.

ps! Hvis du vælger at lave en værktøjslinje i stedet for et menupunkt, kan du trække dine funktioner til en værktøjslinje - så er kode ikke nødvendig.
Avatar billede mira96ac Praktikant
21. april 2007 - 20:18 #20
Men man skal vel ikke slette sin menu hvis man opretter den via Funktioner - Tilpas....

Kun hvis man koder den som i mit udgangspunkt-eksempel.
Avatar billede word-hajen Nybegynder
21. april 2007 - 21:30 #21
Ved kode :-) (ellers er man jo lidt ilde stedt *s*)
Avatar billede mira96ac Praktikant
21. april 2007 - 21:55 #22
Det er jeg helt med på så.

Sådan er det også med Excel.

Men tak for inputtet. Dejligt med små fif's.
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