Tipps "n" Tricks
Anwender-Software - Excel

Drucken von Arbeitsmappen verhindern

Thema:

Excel 97, 2000 und 2002

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:
  1. Wechseln Sie mit der Tastenkombination Alt+F11 in die Entwicklungsumgebung von Excel.
  2. Im Projekt-Explorer klicken Sie den Eintrag "DieseArbeitsmappe" doppelt an.
  3. 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.

 

Tipps "n" Tricks
Anwender-Software - Excel