|
In der letzten Ausgabe der Excel-Kolumne habe ich
Ihnen eine Lösung vorgestellt, mit der Sie die Anzahl der Druckseiten
bereits vor dem eigentlichen Druckvorgang ermitteln können. In der
heutigen Ausgabe der Excel-Kolumne verrate ich Ihnen, wie Sie
verhindern können, dass eine bestimmte Tabelle gedruckt werden kann.
Im folgenden Praxisbeispiel wird dem Anwender, der versucht die
Tabelle 1 auszudrucken eine Warnmeldung angezeigt. Um diese
Funktionalität zu programmieren, wenden Sie ein Ereignismakro von
Excel an. Dabei gehen Sie wie folgt vor:
- Wechseln Sie mit der Tastenkombination
Alt+F11 in die Entwicklungsumgebung von Excel.
- Im Projekt-Explorer klicken Sie den Eintrag
"DieseArbeitsmappe" doppelt an.
- Erfassen Sie danach folgendes Ereignismakro:
Private Sub
Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Tabelle1" Then
MsgBox "Sie dürfen diese Tabelle nicht
drucken!"
Cancel = True
End If
Exit Sub
End Sub
Über die Eigenschaft "Names" können Sie den Namen der
aktiven Tabelle ermitteln. In Abhängigkeit davon können Sie dann
entweder den Druckvorgang fortsetzen oder eben die Warnmeldung
ausgeben. Die Abfrage können Sie natürlich erweitern, wenn Sie
beispielsweise ein ganz Reihe von Tabellen haben, die nicht gedruckt
werden dürfen. Das Ereignismakro für diesen Fall sieht dann wie
folgt aus:
Private Sub Workbook_BeforePrint(Cancel As
Boolean)
Select Case ActiveSheet.Name
Case "Tabelle1",
"Tabelle2"
MsgBox "Sie dürfen diese
Tabelle nicht drucken!"
Cancel = True
Case Else
Exit Sub
End Select
End Sub
Über die Case-Struktur haben Sie mehr Möglichkeiten, verschiedene Fälle
zu behandeln als durch die Schachtelung mehrere IF-Strukturen. In
dieser Struktur könnten Sie sogar unterschiedliche Meldungen auf dem
Bildschirm ausgeben, je nach dem von welcher Tabelle versucht wird zu
drucken.
Möchten Sie generell verhindern, dass in dieser Arbeitmappe eine
Tabelle gedruckt werden kann, dann setzen Sie folgendes Ereignismakro
ein:
Private Sub Workbook_BeforePrint(Cancel As
Boolean)
Cancel = True
Exit Sub
End Sub
Indem Sie das Argument "Cancel" auf den Wert "True"
setzen, verhindern Sie für diese Arbeitsmappe jeglichen Ausdruck. Mit
der Anweisung "Exit Sub" beenden Sie danach das
Ereignismakro.
Problem:
Wenn ein Anwender die Arbeitsmappe öffnet und den Warnhinweis zu
den enthaltenen Makros mit Makros
deaktivieren beantwortet, greift diese Technik nicht mehr.
Lässt sich der Mechanismus aushebeln?
Diesen Hinweis haben wir von einigen Lesern erhalten und leider
gibt es keine Lösung. Der integrierte Mechanismus zum Schutz vor
Makroviren hat seinen Sinn und kann aus Excel heraus nicht ausgehebelt
werden. Sobald ein Anwender die Makros deaktiviert, ist der Schutz vor
dem Ausdruck der Arbeitsmappe nicht mehr möglich. Um einen möglichst
wasserdichten Schutz zu erzielen, müssen Sie noch einen Schritt
weitergehen und beispielsweise bestimmte Formeln oder Tabellenbereiche
ausblenden, die nur durch die Ausführung des "auto_open"-Makros
wieder eingeblendet werden.
|