Avatar billede mfrost Nybegynder
05. januar 2003 - 17:45 Der er 10 kommentarer og
1 løsning

bookmark makro i word

Hvordan laver jeg en makro i Word som udskifter indholdet af et bookmark?
Avatar billede martin_moth Mester
05. januar 2003 - 19:46 #1
Hvis dit bookmark har navnet "MitBookmark"

  Selection.GoTo What:=wdGoToBookmark, Name:="MitBookmark"
  Selection.TypeText Text:="Nyt indhold af bookmark"
Avatar billede mfrost Nybegynder
05. januar 2003 - 20:30 #2
Jeg får runtime error 4605: This method or property is not available because the object refers to a protected area of the document.

Kan mit bookmark evt. være forkert oprettet? Jeg har gjort følgende:
1) menu --> insert --> bookmark. Skrevet "MitBookmark" og valgt Add.
2) I mit Word dokument indsat et field: { MitBookmark }
Avatar billede martin_moth Mester
05. januar 2003 - 20:57 #3
Jeg gør præcis det samme - Indsæt > Bogmærke, og giver det navnet MitBookmark.
Jeg opretter en macro (Alt+F8, vælger opret),og i macroen skriver jeg koden ovenfor, og det hele virker perfekt...

Dokumentet er ikke skrivebeskyttet/beskyttet fra menuen Funktioner > Beskyt dokument?
Avatar billede mfrost Nybegynder
05. januar 2003 - 22:24 #4
Jeg startede helt forfra og får ikke længere fejlmeddelelsen! Til gengæld får jeg nu teksten "Nyt indhold af boookmark" flere gange efter hinanden, hvis jeg kører macroen flere gange.
Kan det lade sig gøre at erstatte indholdet i samme field uden denne effekt?
(jeg benytter i øvrigt Word 2002)
Avatar billede mfrost Nybegynder
05. januar 2003 - 23:35 #5
Jeg fik grunden til den tidligere fejl (error 4605):
Mit bookmark field { Mitbookmark } lå i samme dokument med nogle protected text form fields { FORMTEXT }. Selvom macroen ikke berører disse text form fields fejler den i Selection.TypeText metoden, sålænge hele dokumentet er i protected mode!! Lidt irriterende eftersom jeg gerne ville beholde mine protected text form fields i mit dokument sammen med diverse bookmarks fields (som er dem jeg gerne vil ændre indholdet af)... hm!
Avatar billede martin_moth Mester
06. januar 2003 - 11:10 #6
Hmm - det eneste macroen gør er at finde bookmarket, og skriver noget tekst. Hver gang du kører macroen kommer der blot mere tekst efter bookmarket...

Tænk på hvad et bookmark er - blot en navngiven placering i et dokument. Ikke et tekstfelt, men et navngivent sted cursoren kan placeres!

Men hvorfor er det et problem - det jeg bruger bookmarks til er at lade brugeren indtaste et par standard værdier i en uderform (fx. navn og adresse på modtager) inden et nyt dokument oprettes. Disse indsættes så automatisk i diverse bookmarks - jeg kan ikke se i hvilke situationer du har brug for at "udskifte tekst i et bookmark"?

Det lyder som om du mere har brug for nogle felter eller måske noget brevfletning. Alternativt kan du bruge bookmarks og vælge Overskriv, men hvis teksten du vil indsætte ikke har samme længde som den der stod i forvejen får du problemer.
Avatar billede martin_moth Mester
06. januar 2003 - 11:15 #7
vrøvl - giv mig 2 min...
Avatar billede martin_moth Mester
06. januar 2003 - 11:21 #8
Glem mit sludder om at et bookmark ikke kan indeholde tekst! Marker noget tekst, og angiv det som et bogmærke med navnet MitBookmark

Koden her udskifter indholdet:

    Selection.GoTo What:=wdGoToBookmark, Name:="MitBookmark"
    Selection.TypeText Text:="Nyt Indhold"
    Selection.HomeKey Unit:=wdLine, Extend:=wdExtend '<-- Pas på
    With ActiveDocument.Bookmarks
        .Add Range:=Selection.Range, Name:="MitBookmark"
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With

Dette virker, hvis bookmarket står som det første tekst på en linie, og kun fylder en linie. Kan dette ikke opfylde dine krav, så kik på linien med kommentaren Pas på, og ret den til :o)
Avatar billede mfrost Nybegynder
06. januar 2003 - 17:30 #9
ja, det begynder at ligne noget som kan bruges :) Jeg fandt bla. også denne kodeklump på nettet:

Selection.GoTo What:=wdGoToBookmark, Name:="MitBookmark"
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.InsertAfter "Nyt indhold"
ActiveDocument.Bookmarks.Add Range:=Selection.Range, _
  Name:="MitBookmark"

MEN, jeg er stødt ind i et større problem. Macroen fejler hvis Protection er slået til på mine Text Form Fields! Kan jeg ikke beskytte disse felter samtidig med at jeg opdaterer min Bookmarks?  (eller kan jeg temporært fjerne Protection på disse felter { FORMTEXT }, imens Macroen laver opdateringen?)
Avatar billede martin_moth Mester
06. januar 2003 - 17:52 #10
Fjern protection, opdater bookmarks, sæt protection igen ... :o)
Avatar billede mfrost Nybegynder
06. januar 2003 - 21:19 #11
takker
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