Avatar billede jsmidt Nybegynder
08. februar 2007 - 13:38 Der er 18 kommentarer og
1 løsning

Anvendelse af "variabler" i Word som indtastes af bruger

Hej

Jeg skal oprette et "standarddokument"/skabelon med en række variabler, f.eks. kunde, dato, dato_for_underskrift, status_dato mv.

Disse variabler skal indtastes af bruger, evt. første gang dokumentet åbnes alternativt på en selvstændig side/ved anvendelse af "makroknap".

Jeg er helt blank i dette! - kan nogen hjælpe med opsætning af disse variabler samt et lille script/el.lign. hvor brugeren bliver holdt i hånden og bare skal taste oplysninger ind?


På forhånd tak,

Jesper
Avatar billede old-faithful Praktikant
08. februar 2007 - 14:04 #1
Jeg har set folk bruge tomme makrofelter til at vise hvor ting skal indtastes. Så trykker man blot på et felt og begynder at skrive. Der kan i forvejen være indsat tekst som "Skriv her", hvilket så forsvinder når man begynder og skrive i pågældende felt.
Avatar billede old-faithful Praktikant
08. februar 2007 - 14:10 #2
Jeg må hellere lige uddybe:

Du kan f.eks. vælge Insert -> Field -> MacroButton -> Indstille til "NoMacro". Der bliver så indsat et felt. Du kan ændre på hvad der skal stå i tekstfeltet ved at højreklikke på feltet og trykke på "Toggle Field Codes". Efter "MacroButton NoMacro" skriver du den tekst du vil have vist. Du kan også formatere den som du vil, f.eks. ved at  sætte en farvet eller blinkende skrifttype.

// Old-Faithful™
Avatar billede old-faithful Praktikant
08. februar 2007 - 14:14 #3
Du kan forresten også bare trykke på CTRL + F9 og så skrive teksten inden i { }, f.eks.:

    { MacroButton NoMacro DinTekstHer}

// Old-Faithful™
Avatar billede jsmidt Nybegynder
08. februar 2007 - 14:31 #4
Hej Old-faithful

Tak for dit svar, men...., enten forstår jeg ikke ideen i dit forslag eller også er min problemstilling ikke belyst ordentlig.

Hvis jeg flere steder i teksten vil have, at der f.eks. Coca-cola (kunde), 31. december (status_dato), 8. februar (dato) mv., men jeg kun vil skrive det et sted, f.eks på første side eller via "makroknap" hvordan kan jeg gøre det med din løsningsforslag? Jeg tror ikke jeg forstår hvad "MacroButton Nomacro [f.eks] Coca-cola" gør - som jeg ser det skal jeg jo skrive det alle steder eller hvad?

Håber du kan se min problemstilling - og på forhånd tak,

Jesper
Avatar billede old-faithful Praktikant
08. februar 2007 - 14:40 #5
Så er det mig der har misforstået. Jeg havde forstået spørgsmålet som at du havde en række felter, som du ville vise brugeren, at denne skulle skrive i (og hvordan feltet skulle udfyldes).
Avatar billede jsmidt Nybegynder
08. februar 2007 - 14:43 #6
Ok, men du har ikke et løsningsforslag til den nye problemstilling?
Avatar billede old-faithful Praktikant
08. februar 2007 - 14:45 #7
Det er desværre ikke et område jeg har stor erfaring med. Du kan evt. prøve at læse om hvordan man laver en "wizard" her: http://msdn2.microsoft.com/en-us/library/aa140952(office.10).aspx
Avatar billede supertekst Ekspert
08. februar 2007 - 16:30 #8
Måske er løsningen følgende:
I skabelonen lagres en userform (en slags dialogboks) indeholdendede de pågældende felter.

Nogle felter skal sikkert placeres på bestemt steder i dokumentet. Dette kan gøres via bogmærker. Jeg forstår også at visse felter skal anvendes flere gange i dokumentet. Det er et spørgsmål om at aktivere feltet i formularen, så det overføres til markørens placering - hvis placeringerne af disse kan variere.

Det heles styres af VBA-kode i formularen.

Er det forstået korrekt?

Hvis du alleredehar et eksempel - kan dette sendes til: pb@supertekst-it.dk
Avatar billede jsmidt Nybegynder
08. februar 2007 - 22:53 #9
Hej Supertekst :-)

Ja, jeg tror det er korrekt forstået - men jeg forstår ikke hvad du mener med om jeg allerede har et eksempel? Jeg har hurtig lave en tekst hvor f.eks. KUNDE (=coca-cola", DATO (=8. februar), STATUS_DATO (=31. december) står flere steder, men jeg kan ikke umiddelbart lave en userform - var det noget du vil forsøge at "indlægge"?

Indtil nu - tak for hjælpen,

Jesper
Avatar billede supertekst Ekspert
08. februar 2007 - 22:59 #10
Ja - det vil jeg gerne - men kan du ikke liste over de variabler, der er brug for - der skal vel være flere end KUNDE, DATO og STAUS_DATO - eller det er måske det hele?
Avatar billede jsmidt Nybegynder
08. februar 2007 - 23:02 #11
Super, jeg sender dig et worddokument om 10 mio. med angivelse af en række variabler (og tekst),

:-)

JS
Avatar billede old-faithful Praktikant
08. februar 2007 - 23:29 #12
10 mio.? Så kommer du nok til at vente et stykke tid :-)
Avatar billede jsmidt Nybegynder
08. februar 2007 - 23:30 #13
ups, 10 min. :-) Mailen er faktisk allerede sendt - for 4-5 min. siden. Har du ikke modtaget den?

JS
Avatar billede jsmidt Nybegynder
08. februar 2007 - 23:31 #14
ja, nu går det jo rigtig godt - skriver forkert og svarer den forkerte :-) Jeg tror efterhånden det snart er sovetid :-(

Hilsen

Jesper
Avatar billede supertekst Ekspert
09. februar 2007 - 11:43 #15
Der er sendt "system" til dig pr. mail
Avatar billede jsmidt Nybegynder
09. februar 2007 - 14:19 #16
Hej Supertekst

Det ser jo super ud!

Jeg har forsøgt at "oprette" yderligere variabel, men det er måske ikke så lige til? Jeg troede bare jeg kunne kopiere et indtastningsfelt i objektet og ændre navn i properties. Når jeg kører markoen kommer det nye felt på useformen, men når jeg siger ok lave den en fejl i "erstatTxt = Me.Controls(søgtxt).Value"

Er det til at forklare?

Du skal i hvertfald have mange tak for hjælpen - det ser super ud.

Hilsen

Jesper
Avatar billede jsmidt Nybegynder
09. februar 2007 - 14:28 #17
Hvordan "afslutter" jeg spørgsmålet så det ikke er åben?
Avatar billede supertekst Ekspert
09. februar 2007 - 14:52 #18
Forklaring er afsendt pr. mail

Du får et svar, som du blot acceptere..
Avatar billede supertekst Ekspert
19. februar 2007 - 10:57 #19
Denne kode er indlagt i en Userform, hvor bruger kan udfylde et antal tekstbokse, der anvendes i et dokument et eller flere steder:

Private Sub CommandButton1_Click()                  'OK
Dim cc As Control, søgText, erstatTxt
    For Each cc In Me.Controls
        cnavn = LCase(cc.Name)
        If InStr(cnavn, "label") = 1 Then
            søgtxt = Left(cc.Caption, Len(cc.Caption) - 1) ': fjernes
            erstatTxt = Me.Controls(søgtxt).Value
            udførErstatning søgtxt, erstatTxt
        End If
    Next
    Selection.HomeKey Unit:=wdStory                'gå til start af dokument
End Sub
Private Sub udførErstatning(tekst, erstat)
    Selection.HomeKey Unit:=wdStory                'gå til start af dokument
   
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = tekst
        .Replacement.Text = erstat
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = True
        .MatchWholeWord = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
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