/ Forside/ Teknologi / Udvikling / VB/Basic / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Word VBA Indholdsfortegnelse
Fra : clauesen
Vist : 439 gange
200 point
Dato : 09-10-03 17:18

Hej til all,
jeg har forsøgt at lave en vba code til oprettelse af en indholdsfortegnelse i et word dokument.
Sagen er den at jeg i et word dokument indsætter et antal .doc filer og vil så gerne have vba til at oprette en indholdsfortegnelse over de indsatte filer.
Først laver jeg en liste (Listbox1) over filerne, dernæst indsætter jeg dem, opretter tekst til indholdsfortegenelsen og når alle filer er indsat oprettes indholdsfortegnelsen. I alt sin enkelthed ser det sidste sådan ud:
---
For intCnt = 0 To UserForm1.ListBox1.ListCount - 1
Selection.EndKey unit:=wdStory
Selection.InsertBreak Type:=wdPageBreak
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
' Der indsættes tekst til indholdsfortegnelsen
entryText = InputBox("Skriv tekst til indholdsfortegnelse", "Indholdsfortegnelse...", UserForm1.ListBox1.List(intCnt))
ActiveDocument.TablesOfContents.MarkEntry Range:=Selection.Range, entry:=entryText
Selection.InsertFile FileName:=UserForm1.ListBox1.List(intCnt)
Next intCnt

'Indholdsfortegnelsen udskrives
Set myRange = ActiveDocument.Bookmarks("Indhold").Range
ActiveDocument.TablesOfContents.Add Range:=myRange, UseFields:=True, UseHeadingStyles:=False
---

Når indholdsfortegnelsen så skrives ud kommer sidetallet til at svare til den sidste side af den fil den refererer til og ikke den første. jeg har en fornemmelse af det er Range'n det er galt med men kan ikke gennemskue det.

Er der nogen der har erfaring inden for dette og som vil hjælpe

Mvh. clauesen


 
 
Kommentar
Fra : Per.Frederiksen


Dato : 09-10-03 22:27

Prøv lige at skrive kommentarer i din program kode, så man kan se hvad det er du ønsker der skal ske i en kode blok. Eller så skal jeg jo kende alle detaljer i hvad hver kommando laver, samt hvad der er logikken i dit program.

Den logik jeg evt. ville bruge, det er:

do
'skriv tekst der skal optræde i indholdsfortegnelsen
'sæt liniens typografi til TOC

'indsæt dokumentet
'næste line/ny paragraf/whatever
loop until ..listCount-1

mvh. Per

Kommentar
Fra : MouseKeeperX


Dato : 10-10-03 05:05

Prøv at kikke på Range.Start og Range.End

mvh
MouseKeeperX

Kommentar
Fra : clauesen


Dato : 14-10-03 14:06

Tak til Per og musen for indlæg.

Min løsning er (foreløbig) blevet til:

*********************

For intCnt = 0 To UserForm1.ListBox1.ListCount - 1
Selection.EndKey unit:=wdStory 'går til slutning af dokumentet
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter 'centrerer

Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldTOCEntry, Text:= _
"Tekst" & "\f P", PreserveFormatting:=True 'Indsætter TC felt; "Telst" er den tekst der indsættes i indholdsfortegnelsen P
Selection.InsertFile FileName:=UserForm1.ListBox1.List(intCnt) ' Indsætter filen fra listen
Next intCnt

Set Indholdrange = ActiveDocument.Bookmarks("Indhold").Range
ActiveDocument.TablesOfContents.Add Range:=Indholdrange, UseFields:=True, _
UseHeadingStyles:=False, TableID:="P" 'Udskriver indholdsfortegnelse P ved bogmærket Indhold

*********************

Grunden til at kalde indholdsfortegnelsen P er, at jeg har flere indholdsfortegnelser i dokumentet.
Forøvrigt returnerer Range.Start ikke en range, så det kunne jeg ikke bruge.
Jeg har brugt feltet wdFieldTOCEntry, da jeg ikke ønskede at skrive noget ind kun indsætte filen.

Hvis der er nogen, som har interesse i dette kan ovenstående måske benyttes - men det lader ikke til, at der er ret mange, som har erfaring i at lave indholdsfortegnelser med vba !
Jeg har søgt meget på nettet uden held!

Mvh. clauesen

Kommentar
Fra : MouseKeeperX


Dato : 14-10-03 14:23

Hej Clauesen
Tak for din løsning - rart når spørgere deler ud af andet end point :)

mvh
MouseKeeperX

Kommentar
Fra : Per.Frederiksen


Dato : 14-10-03 16:03

Hej Clausen,
nu er din situation jo også lidt speciel. Med flere indholdsfortegnelser, og tekst til en fælles oversigt via skjult tekst.
Men endnu en gang må vi konstatere, at VBA ikke er så ringe endda. Nå man ellers lige får eksperimenteret sig frem til at udtrykke sit ønske på den måde som VBA nu engang gerne vil have det.

mvh. Per

Kommentar
Fra : clauesen


Dato : 14-10-03 16:23

Hej,
jeg har engang i et andet forum skrevet noget i retning af: Jo mere man lærer om vba, jo mere ved man der er tilbage at lære.
Og det viser sig igen og igen at være sandt.

Mvh Cl

Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 177413
Tips : 31962
Nyheder : 719565
Indlæg : 6407803
Brugere : 218875

Månedens bedste
Årets bedste
Sidste års bedste