Avatar billede jobless Nybegynder
14. november 2003 - 16:34 Der er 10 kommentarer og
1 løsning

Bookmarks og InsertFile

Hej.

Jeg har et problem i VBScipt.

Jeg genererer et dokument via asp, og indsætter data i nogle bookmarks. Jeg bruger følgende kode:

Set rngRange = objWordApp.ActiveDocument.Paragraphs(objWordApp.ActiveDocument.Paragraphs.Count).Range
rngRange.MoveEnd()
rngRange.Start = rngRange.End
rngRange.InsertFile theTemplate

Dim rngRange
if objWordApp.ActiveDocument.Bookmarks.Exists("navn") = true then
Set rngRange = objWordApp.ActiveDocument.Bookmarks("navn").Range
rngRange.InsertAfter arrWord(intPointer + 0)
end if

Dette kører i en løkke, som skriver ud fra et array (arrWord).

Det hele kører fint, bortset fra at jeg bruger kommandoen InsertAfter, hvilket gør at jeg indsætter teksten efter mit bookmark.
Jeg vil gerne indsætte teksten i mit bookmark, da jeg så kan referere til mit bookmark, andre steder i dokumentet.

Er der nogen som kan omskrive ovenstående til at indsætte teksten i mine bookmarks, istedet for efter. Da det kører i en løkke (flere sider fra samme skabelon, og med samme bookmarks-navne) er det vigtigt at der kun arbejdes med bookmarksene på den senest indsatte fil.

MVH

JoBless
14. november 2003 - 16:43 #1
Dim objBookmark
if objWordApp.ActiveDocument.Bookmarks.Exists("navn") = true then
Set objBookmark = objWordApp.ActiveDocument.Bookmarks("navn")
objBookmark.Text = arrWord(intPointer + 0)
objBookmark.Bookmarks.Add "navn"
endif
14. november 2003 - 16:43 #2
Der var sku en lille fejl
14. november 2003 - 16:45 #3
Sådan skal det være:

Dim rngRange
if objWordApp.ActiveDocument.Bookmarks.Exists("navn") = true then
Set rngRange = objWordApp.ActiveDocument.Bookmarks("navn").Range
rngRange.Text = arrWord(intPointer + 0)
rngRange.Bookmarks.Add "navn"
end if
15. november 2003 - 17:34 #4
fik du det til at virke?
Avatar billede jobless Nybegynder
15. november 2003 - 19:45 #5
Nej, det virker ikke.

Bookmarket bliver sat ind i første fil, altså jeg genererer flere dokumenter i samme script, og mine data bliver godtnok sat i bookmarket, men kun i første fil. Linien i de efterfølgende filer er blank.

Problematikken er, at den skal finde bookmarket i det range den er i (rngRange), istedet for at finde bookmarket i hele det aktive dokument.

ps.: Jeg har kun testet dit sidste indlæg.

pss.: Koden jeg skrev foroven virker, men indsætter ikke teksten inde i bookmanrket
15. november 2003 - 22:21 #6
så prøv at fjerne linien

rngRange.Bookmarks.Add "navn"

sådan som jeg lige forstår det, så bør det virke.
Avatar billede jobless Nybegynder
16. november 2003 - 10:04 #7
Så kommer alle navne ud i en lang streng i første dokument, og ingen af dem står i et bookmark.. ?!?
Avatar billede rvm Nybegynder
17. november 2003 - 13:44 #8
Bogmærker har den egenskab, at hvis du sætter et dokument ind i et andet dokument, så fjernes bogmærker med sammen navn fra det indsatte dokument. Det kan være det er der dit problem ligger begravet *S*

Løsningen er at arbejde dynamisk med bogmærkerne (altså lave en eller anden form for logik med et løbenummer). F.eks. kalde bogmærkerne Bogm_1, Bogm_2 osv.

Eller også må du slette bogmærkerne i det originale dokument før du indsætter en fil (men så forsvinder referancerne).
Avatar billede jobless Nybegynder
17. november 2003 - 16:56 #9
JEg troer at jeg dropper ideen, men tak for info.
17. november 2003 - 18:20 #10
Navnet på bogmærketkunne jo være en kombination af "navn" og intPointer.....
Avatar billede jobless Nybegynder
17. november 2003 - 20:08 #11
Det bliver et problem, idet jeg skal bruge bogmærkerne i nogle ref-felter, som oprettes manuelt.
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