04. september 2008 - 10:39Der er
11 kommentarer og 1 løsning
Mystik omkring oprettelse af en commandbar button
Til brug for at en hurtig indsættelse af fotos i en word rapport har jeg flikket det her sammen fra nettet og placeret det i NORMAL.DOT:
Sub setup_button() 'checker lige at den ikke er oprettet i forvejen ;-) For Each c In CommandBars If c.Name = "IndsætFoto" Then c.Visible = True Exit Sub End If Next
'Opretter toolbaren Application.CommandBars.Add(Name:="IndsætFoto").Visible = True 'Opretter knappen Set myButton = Application.CommandBars("IndsætFoto").Controls _ .Add(Type:=msoControlButton) With myButton .FaceId = 280 .Caption = "Indsæt Foto" .OnAction = "InsPic" End With End Sub
Sub InsPic() Application.Dialogs(wdDialogInsertPicture).Show End Sub
Problemet er, når jeg åbner et nyt dokument kan commandbaren godt være der den første gang med icon. Næste gang er commandbaren tom ( intet icon og no action). Selvom jeg sletter baren kan den godt dukke op igen - altså to "IndsætFoto" tomme ved siden af hinanden.
Det pudsige er, at i starten hed den "Menubar" i stedet for "IndsætFoto". En sådan dukker igen og igen selvom jeg har slettet den og de to "IndsætFoto".
1) Hvorfor forsvinder min action og icon 2) Hvorfor dukker "menubar" op selvom den er slettet og der ikke ligger kode synligt med ordet "menubar" i ???
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.
I forbindelse med sletning og oprettelse af commandbars og controls i commandbars er det derfor 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.
Hvis du pga. manglende styring af CustomizationContext har fået oprettet commandbar og control i tilfældige dokumenter, vil de dukke op deri, indtil du sletter dem.
Du har nok et point der, men jeg får stadig 2 + 1 blanke iconer (dvs en af dem havde første gang en blank actionknap), selvom jeg sletter dem igen og igen. De dukker op i det blanke dokument, når WORD åbnes, så det må stamme fra normat.dot.
Hvordan kommer jeg tilbage til normal !! tilstand og får lagt knappen ind rigtig.
Jeg har kørt denne her (fra et andet spg her) for de 2+1 menubarer, men de dukker op igen ved genstart af WORD:
Const BAR_NAME = "MenuBar" Do While True On Error GoTo errorHandler Application.OrganizerDelete NormalTemplate, BAR_NAME, wdOrganizerObjectCommandBars Loop errorHandler: On Error Resume Next
Er dine commandbars væk, når du har kørt ovenstående makro? (Det lyder det til, at de er). Når de dukker op igen, tyder det på, at ændringerne ikke er blevet gemt.
Sørg for at gemme Normal.dot, lige efter, at du har kørt ovenstående. Du har ikke skrevet noget om Word-version. Hvis det er Word 2003 eller tidligere: 1. Hold Skift nede og vælge Filer > Gem alt (File > Savle All). 2. Svar ja, hvis du bliver spurgt, om du vil gemme ændringer til Normal.dot.
Hej Lene - haft lynende travlt. Det ser ud til at virke nu. Sjovt nok starter den nu hver gang i Office11 mappen og husker ikke mappen fra gang til gang som den gjorde før. Tak for hjælpen - smid et svar.
Hej Lene Det virker fint, men efter at være gemt i normal.dot starter den hver gang i Office11 mappen og ikke mappen, hvor den hentede det sidste billede. Denhar tilsyneladende glemt alt om hvor den sidst var. Har du et bud på det ??
Løsning: Global strFotoSti As String Sub InsPic() If Len(strFotoSti) > 0 Then Options.DefaultFilePath(Path:=wdPicturesPath) = strFotoSti End If Application.Dialogs(wdDialogInsertPicture).Show strFotoSti = Options.DefaultFilePath(Path:=wdPicturesPath) End Sub
Hej Lene Ups - jeg så ikke, at du havde svaret. Denne her ser ud til at virke.
Tak for svaret.
Henrik
Synes godt om
Ny brugerNybegynder
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.