Tipps "n" Tricks
Anwender-Software - Excel

Anzahl der Druckseiten mit VBA ermitteln

Thema:

Excel 97/2000/2002   

In der heutigen Ausgabe der Excel-Kolumne möchte ich Ihnen eine VBA-Lösung vorstellen, mit der Sie die Anzahl der Druckseiten einer Tabelle bzw. einer ganzen Arbeitsmappe ermitteln können. Standardmäßig rufen Sie vor dem Drucken die Seitenansicht von Excel auf, um die zu erwartende Anzahl von Druckseiten auf dem Bildschirm zu sehen. Hier können Sie dann mit einem Klick auf die Schaltfläche LAYOUT die Seite so einrichten, daß möglichst wenig Druckseiten gedruckt werden müssen. Sie werden dort im Einzelnen die Randeinstellungen ändern bzw. die Druckseiten mit Hilfe der Verkleinerungsfunktion von Excel auf die gewünschte Anzahl von Druckseiten skalieren.

Den Vorgang der Druckseitenprüfung können Sie auch mit einem VBA-Makro abfragen. Im folgenden Makro ermitteln Sie die Anzahl der Druckseiten in der aktiven Tabelle:

Sub SeitenzahlDerAktivenTabelleErmitteln()
Dim i As Integer
  i = ExecuteExcel4Macro("Get.Document(50)")
  MsgBox "Anzahl der Seiten = " & i
End Sub


Um diese Anzahl der Seiten zu ermitteln rufen Sie das Makro Get.Document auf und übergeben diesem Makro das Argument 50. Das Ergebnis dieser Abfrage speichern Sie in der Variablen i, die Sie im Anschluß auf dem Bildschirm ausgeben. Um die Meldung aus Text und der ermittelten Anzahl der Druckseiten zusammenzusetzen, verwenden Sie den Verkettungsoperator &.

Das obige Makro könnten Sie auch als Funktion verwenden. Ein typischer Fall dafür wäre folgender: Eine Tabelle darf nur dann gedruckt werden, wenn die Anzahl der ermittelten Druckseiten = 1 ist. Im anderen Fall soll eine Bildschirmmeldung angezeigt und das Makro ohne weitere Aktion beendet werden. Der Code für diese Aufgabe lautet:

Function SZ()
Dim i As Integer
  i = ExecuteExcel4Macro("Get.Document(50)")
  SZ = i
End Function

Sub Abfrage()
  If SZ = 1 Then
    ActiveWindow.SelectedSheets.PrintOut
  Else
      MsgBox "Zuviele Druckseiten!"
      Exit Sub
  End If
End Sub


Was für die aktive Tabelle funktioniert können Sie selbstverständlich auch für die gesamte Arbeitsmappe, also mehrere Tabellen anwenden. Das folgende Makro zählt alle Druckseiten einer Arbeitsmappe.

Sub SeitenzahlErmitteln()
Dim i As Integer
Dim Blatt As Worksheet

  i = 0
  For Each Blatt In ActiveWorkbook.Sheets
    Blatt.Activate
    Seiten = ExecuteExcel4Macro("Get.Document(50)")
    i = i + Seiten
  Next Blatt
  MsgBox "Anzahl der Seiten = " & i
End Sub


In einer Schleife arbeiten Sie eine Tabelle nach der anderen ab und ermitteln die jeweiligen Druckseiten pro Tabelle. Diese Druckseiten addieren Sie zusammen und geben Sie am Ende auf dem Bildschirm aus.

 

Tipps "n" Tricks
Anwender-Software - Excel