|
|
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. |
|