[Excel] Druckseitenzahl ermitteln

Vitus

Mitglied
Moinmoin,

gibt es in Excel eine Funktion um die Anzahl der Druckseiten in eine Zelle zu schreiben? Ich bräuchte das für ein Prüfprotokoll bei dem die Seitenzahl zwischen zwei und drei variiert. Damit der Benutzer das nicht jedesmal selbst eingeben muss, wollte ich dazu nach möglichkeit eine Office Funktioni nutzen. Bisher habe ich zu diesem Thema nichts gefunden.

Ich hoffe ihr könnt mir helfen!
Gruß vom
Vitus
 
Hallo Walter,
Hallo Alexander,

danke für die Antworten. Fußzeile reicht mir leider nicht - die Seitenzahl steht mitten auf dem Protokoll in einer der Zellen...
 
Hallo Vitus,

dann hilft vielleicht ein Makro weiter.
Das Makro müsste etwa von dieser Art sein:

Code:
Sub Seitenzahl()
  Dim sSeite As Integer
  Dim sSeiten As Integer
  Dim mWs As Worksheet
  
  ' Anzahl Seiten
  sSeiten = ThisWorkbook.Sheets().Count
  ' zum Beispiel nach B4:
  ActiveSheet.Range("B4").Value = sSeiten
  
  ' oder (kommt darauf an wie die Mappe aufgebaut ist
  sSeiten = ThisWorkbook.Worksheets().Count
  ActiveSheet.Range("B5").Value = sSeiten
  
  ' Seite
  For Each mWs In ThisWorkbook.Sheets()
    mWs.Range("C1").Value = mWs.Index ' Seite nach C1
  Next
  ' oder
  For Each mWs In ThisWorkbook.Worksheets()
    mWs.Range("C2").Value = mWs.Index ' Seite nach C2
  Next
  ' oder mit Zähler
  Dim iZ As Integer
  iZ = 1
  For Each mWs In ThisWorkbook.Worksheets()
    mWs.Range("C3").Value = iZ ' Seite nach C3
    iZ = iZ + 1
  Next
End Sub

Ich gehe davon aus, dass der Index den Seitenzahlen entspricht sonst mit Zähler. Eventuell musst du die Mappe anders anordnen.
Wenn allerdings die Seitenzahlen ohne Systematik immer an einer anderen Stelle stehen ?


Viel Erfolg

Walter Gutermann
 
Zuletzt bearbeitet:
Hallo Walter,

möööp! So bekomme ich zwar die Anzahl der Worksheets, diese ist jedoch ungleich der Anzahl der Druckseiten ;)
Worksheets habe ich immer nur zwei - aber da die Tabelle auf der zweiten Seite erweitert wird, können aus den zwei Sheets schnell drei oder vier Druckseiten werden.

Gruß Vitus
*ratlos*
 
Hai,

ich habe auch mal eine Version als Makro versucht und dabei ist beiligendes Dokument rausgekommen.

Dabei wird die Höhe und Breite jeder Zeile/Reihe berechnet ins Verhältnis zur Seite gestellt und in die Zelle ausgegeben, wo die Formel reingeschrieben wurde.

Viel Spass beim basteln

DuckDonald
 

Anhänge

Hallo Vitus,

da habe ich geschlafen :mad: bzw. nicht zu Ende gedacht. Jetzt bin ich ebenso ratlos wie Du.

Habe inzwischen die Antwort von DuckDonald gelesen. Vielleicht kommt man auf diesem Weg weiter.

Viel Erfolg
Walter Gutermann
 
Danke für Eure Hilfe!
Mit dem Makro vom Erpel habe ich es hinbekommen. Da ich diese Excel Tabellen sowieso über VB automatisiert habe, war die Umsetzung etwas umständlicher. Hier meine Lösung:

Code:
Public Function excelGetPageCount(sheet As Integer, lastRow As Long) As Integer
  Dim dTemp As Double
  Dim Y, i As Long
  
  'letzte Zeile ermitteln
  Select Case sheet
    Case 1:
      For i = 1 To lastRow
        dTemp = dTemp + xlSheet1.Cells(i, 1).RowHeight
      Next i
    Case 2:
      For i = 1 To lastRow
        dTemp = dTemp + xlSheet2.Cells(i, 1).RowHeight
      Next i
  End Select
  Y = 800
  
  'Seitenanzahl berechnen und ausgeben:
  excelGetPageCount = xlApp.WorksheetFunction.RoundUp(dTemp / Y, 0)
End Function

Dies ist KEIN Excel Makro, sondern Teil meines VB Programms! Die Spalten zu zählen habe ich weggelassen, die sind sowieso gesperrt. Da ich ein Problem damit hatte die letzte Zeile mit Eintrag zu finden, lasse ich mir diesen Wert von der aufrufenden Routine übergeben (lastRowCount).
Die Objekte xlSheet1 und xlSheet2 sind vom Typ object und als Excel Worksheets deklariert, xlApp ist ein object welches auf das laufende Excel Programm verweist - die Deklarationen findet sich an anderer Stelle im Programm.
In der letzten Zeile der Funktion wird der gerundete Wert übergeben - die Stelle ist leider besonders hässlich geworden, aufrunden unter VB wäre aber nicht weniger umständlich ;)

Nochmal ein großes Dankeschön an Walter und den Donald!

Gruß vom
Vitus
 

Neue Beiträge

Zurück