robinvdveeken
Gebruiker
- Lid geworden
- 7 sep 2010
- Berichten
- 84
Bijzondergewaardeerde forumleden,
Een vraag die ik vaker op internet ben tegengekomen maar waar ik nog geen passend antwoord op gevonden heb:
Door middel van hyperlinks is een index van de Worksheets maken een koud kunstje. Een inhoudsopgave, (index met paginanummers) is echter een stuk lastiger doordat Excel geen pagina's telt.
Ik heb nog even gedacht aan de nummering's mogelijkheid in de voettekst ( Page 3 van 147) Toch lijkt me dit ook niet toegankelijk.
Met behulp van wat andere bronnen op internet ben ik tot de volgende code gekomen:
Hierbij word eerst een printscreen gemaakt zodat de pagina einden, zowel horizontaal als verticaal worden geteld. Deze met elkaar vermendigvuldigd geeft het aantal pagina's in een worksheet.
Toch werkt de code nog niet.
Iemand suggesties dan wel een andere code?
Alvast bedankt.
Groeten,
Robin
Een vraag die ik vaker op internet ben tegengekomen maar waar ik nog geen passend antwoord op gevonden heb:
Door middel van hyperlinks is een index van de Worksheets maken een koud kunstje. Een inhoudsopgave, (index met paginanummers) is echter een stuk lastiger doordat Excel geen pagina's telt.
Ik heb nog even gedacht aan de nummering's mogelijkheid in de voettekst ( Page 3 van 147) Toch lijkt me dit ook niet toegankelijk.
Met behulp van wat andere bronnen op internet ben ik tot de volgende code gekomen:
Code:
Sub CreateTableOfContents()
Dim WST As Worksheet
On Error Resume Next
Set WST = Worksheets("Table of Contents")
If Not Err = 0 Then ' De Table of contents bestaat nog niet. Voeg deze toe.
Set WST = Worksheets.Add(Before:=Worksheets(1))
WST.Name = "TOC"
End If
On Error GoTo 0
' Maak nieuwe TOC pagina
WST.[A2] = "Table of Contents"
With WST.[A6]
.CurrentRegion.Clear
.Value = "Subject"
End With
WST.[B6] = "Page(s)"
WST.Range("A1:B1").ColumnWidth = Array(36, 12)
TOCRow = 7
PageCount = 0
' Maak een printpreview
' sluit de preview handmatig
Msg = "Excel moet een Printpreview doen om het aantal pagina's te bepalen. "
Msg = Msg & "Sluit aub het previeuw venster door op Sluiten te klikken."
MsgBox Msg
ActiveWindow.SelectedSheets.PrintPreview
' Loop door elke sheet, verzameld informatie.
For Each S In Worksheets
If S.Visible = -1 Then
S.Select
' Een van de drie onderstaande lijnen kan gebruikt worden om de titel te bepalen. De overige twee staan als commentaar geacceerd.
ThisName = ActiveSheet.Name
'ThisName = Range("A1").Value
'ThisName = ActiveSheet.PageSetup.LeftHeader
HPages = ActiveSheet.HPageBreaks.Count + 1
VPages = ActiveSheet.VPageBreaks.Count + 1
ThisPages = HPages * VPages
' Vul de info in
Sheets("TOC").Select
Range("A" & TOCRow).Value = ThisName
Range("B" & TOCRow).NumberFormat = "@"
If ThisPages = 1 Then
Range("B" & TOCRow).Value = PageCount + 1 & " "
Else
Range("B" & TOCRow).Value = PageCount + 1 & " - " & PageCount + ThisPages
End If
PageCount = PageCount + ThisPages
TOCRow = TOCRow + 1
End If
Next S
End Sub
Hierbij word eerst een printscreen gemaakt zodat de pagina einden, zowel horizontaal als verticaal worden geteld. Deze met elkaar vermendigvuldigd geeft het aantal pagina's in een worksheet.
Toch werkt de code nog niet.
Iemand suggesties dan wel een andere code?
Alvast bedankt.
Groeten,
Robin