Genkendelse af kode når skabelon bliver til dokument
Kære eksperter.
Jeg har fået til opgave at tilrette en word-template således at når man dobbeltklikker et bestemt sted i dokumentet, vil der komme en dialogboks frem og bede om placering af et billede der skal indsættes samme sted i dokumentet.
Jeg har muligvis ikke valgt den mest elegante løsning, men det fungerer således:
I skabelonen har jeg indsat en commandbutton (der ikke er bundet til nogen form) som ved dobbeltklik udfører den nødvendige kode. Dvs den sletter den commandbutton der lige er klikket på og erstatter den med et billede (man behøver kun at kunne gøre det én gang, så det er ikke noget problem at knappen slettes).
Det fungerer fint så længe jeg redigerer skabelonen, men i det øjeblik skabelonen bliver til dokument leder word efter "commandbutton1_dblclick()" i koden til det nye dokument i stedet for koden til skabelonen.
Er der en måde at bevare knappens tilknytnig til den oprindelige kode eller en måde at overføre template-koden til det nyoprettede dokument?
Håber spørgsmålet er nogenlunde forståeligt. På forhånd tak.
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
sletknappen End Sub Private Sub sletknappen() Dim f For f = 1 To ActiveDocument.Shapes.Count x = ActiveDocument.Shapes(f).Name If ActiveDocument.Shapes(f).Name = "Control 2" Then ActiveDocument.Shapes(f).Delete Exit Sub End If Next f End Sub
Jeg tror ikke problemet er navngivningen. Min første handling er at åbne en dialogbox og det burde den jo altid gøre (og derefter sletter jeg knappen uden at referere til den - når man trykker på den er markeringen automatisk det rigtige sted). Problemet er mere at koden står under "ThisDocument" under "Templateproject", men så snart skabelonen bliver til dokument, leder Word efter koden under "ThisDocument" under "Project (Document 1)" hvor der af gode grunde er tomt eftersom dokumentet er helt nyt. Derfor virker det også fint når jeg redigerer skabelonen, men så snart jeg laver et nyt dokument baseret på skabelonen sker der ingenting når jeg trykker på knappen.
Min kode ser ivørigt således ud:
Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim dlgOpen As FileDialog Set dlgOpen = Application.FileDialog( _ FileDialogType:=msoFileDialogFilePicker) With dlgOpen .Title = "Vælg billlede der skal indsættes" .Filters.Clear .AllowMultiSelect = False
For at svare på det sidste spørgsmål først: 1) Ja, jeg har en reference fra "Project (dokcument1)" til skabelonen ("template project").
2) Dobbeltklikket er blot fordi opgaven var formuleret sådan - enketklik kunne for min skyld være lige godt. Jeg tror bare ikke det ville ændre på problemet.
3) Jeg har blot oprettet knappen ved at ved trykke på commandbutton i kontrolelemnt-menuen og derefter skrevt koden i VBA-editoren under CommandButton1_DblClick i "thisdocument" under template-projektet (min egen sprogforvirring er vist total efterhånden)
4) Hvis det virker hos dig, må jeg så spørge om det virker "hele tiden". Forstået på denne måde: Hvis du skifter frem og tilbage mellem design-mode i VBA-menuen inden du trykker på knappen, virker den så stadig? Jeg har nemlig oplevet at første gang jeg åbner dokumnetet kan den godt køre - men hvis jeg først har skiftet frem og tilbage mellem VBA-design-mode og normal-tilstand kan den ikke længere finde koden det rigtige sted. Det lyder selvfølgelig også som en underlig ting at gøre, problemet er bare at kundens Word starter op i VBA-designmode og at han derfor er tvunget til at skulle skifte tilstand inden han kan trykke på knappen - og så er det den ikke virker.
Jeg har nu prøvet din kode og det virker fint (i en ny skabelon), hvilket jeg både forstår og virkelig ikke forstår - men positivt er det da alligevel. Jeg kan bare ikke grundliggende se nogen forskel på din og min måde at gøre det på.
Det kan muligvis have noget at gøre med den skabelon jeg sætter knappen i (det er ikke én jeg selv har lavet, men den kan måske indeholde noget suspekt jeg ikke har lagt mærke til). Jeg arbejde i øvrigt 2003-udgave.
Er du iøvrigt sikker på at din kode overhovedet sletter nogen knap. Det virker nemlig selvom jeg udkommenterer "sletknappen", hvilket min egen kode også gør selvom jeg ikke aktivt sletter knappen. "Selection.InlineShapes.AddPicture" erstatter vist bare knappen...
Jeg har siddet og prøvet lidt frem og tilbage mens jeg skrev det her og det bliver mere og mere mystisk. Umiddelbart kan jeg godt få både din og min egen kode til at virke i den skabelon det skal indsættes i, men hvis man et tilstrækkeligt antal gange har været inde i editoren og skiftet frem og tilbage mellem designtilstand og normal virker knappen pludselig ikke. Jeg har ikke helt gennemskuet hvad det er der trigger den til ikke at virke, men har på fornemmelsen at hvis programmet først har "opdaget" at der også kan skrives til selve dokumentet (og ikke kun skabelonen) vil den herefter forsøge at finde koden til knappen under dokument-projektet i stedet for under skabelon-projektet.
Tak for din foreløbige hjælp.
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.