Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
596to600
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
596to600
596to600
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ausdrucken über VBA verhindern

Ausdrucken über VBA verhindern
11.04.2005 10:21:22
Torsten
Hallo beisammen,
wie richte ich es ein, daß in einem WB keines der darin
enthaltenen WS ausgedruckt werden kann?
Die Recherche hat mir nicht weiter geholfen.
Für Eure Tips im voraus besten Dank.
Gruß
Torsten

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausdrucken über VBA verhindern
11.04.2005 10:25:19
Tobias
Servus!
Soviel zum Thema Recherche:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Tabelle1" Then
MsgBox "Das Durcken ist nicht erlaubt!"
Cancel = True
End If
Exit Sub
End Sub

Gefunden unter Druck verbieten: https://www.herber.de/forum/archiv/532to536/t533469.htm
Gruss

Tobias
AW: erledigt - mT
11.04.2005 10:31:30
Torsten
Hallo Tobias,
vielen Dank für Deine schnelle Antwort.
Ich habe gesucht unter "Ausdrucken verhindern" und nichts
passendes gefunden. Ich werde mich bessern und beim nächsten Mal auch andere Alternativbegriffe ausprobieren.
Gruß
Torsten
Anzeige
Unbelassen bleibt aber zunächst die Möglichkeit
11.04.2005 10:32:49
Boris
Hi Torsten,
die Blätter in eine andere Mappe zu kopieren und dann auszudrucken.
Oder eine Hardcopy anzufertigen, oder Verknüpfungen auf die Tabelle zu erstellen oder oder ...
Will nur sagen: Wo ein Wille, da bekanntlich ein Weg.
Sei dir daher nur nicht sicher, dass dir nicht irgendwann ein Ausdruck deiner Datei über den Weg läuft ;-)
Grüße Boris
AW: Unbelassen bleibt aber zunächst die Möglichkeit
11.04.2005 10:49:37
Torsten
Hallo Boris,
mit Deinen Einwänden hast Du natürlich Recht. Und wie Du sagst, ...wo ein Wille , da ist auch ein Weg. Aber das möchte ich meinen Usern dann doch nicht unterstellen wollen.
Wass mir aber in dem Zusammenhang noch einfällt: Ich weiß zwar, wie das "Speichern unter.." einer Datei verhindern werden kann, aber kann ich auch das Kopieren eines WS verhindern? Hast Du da eine Idee?
Gruß
Anzeige
Möglich ist fast alles...
11.04.2005 11:02:08
Boris
Hi Torsten,
nur alles eine Frage des Aufwands.
Du kannst die Register ausblenden, die Mappe schützen, die Zwischenablage ständig leeren mit:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim newDAO As New DataObject 'Verweis auf die Microsoft Forms 2.0 Object Library notwendig
Application.CutCopyMode = False
newDAO.SetText ""
newDAO.PutInClipboard
Set newDAO = Nothing
End Sub

Aber immer noch kann man in andere Mappen rüber kopieren.
Zudem kannst du die Selektionsmöglichkeiten einschränken oder gar ganz verbieten - allerdings stellt sich dann die Frage, ob man mit der Mappe noch arbeiten kann.
Lange Rede kurzer Sinn: Das wirst du wohl kaum 100%ig unterbinden können.
Grüße Boris
Anzeige
AW: erledigt - mT
11.04.2005 11:08:38
Torsten
Hallo Boris,
vielen Dank für Deine Ausführungen.
Schreibgeschützt ist die Datei ohnehin. Ich wollt' halt nur unterbinden, daß der User sich ein einzelnes WS kopiert. Wenn das gänzlich nicht auszuschließen ist, dann belasse ich es bei den bisherigen Einschränkungen.
Nochmals besten Dank.
Gruß
Torsten
AW: versuche doch mal...
11.04.2005 19:49:10
FP
Hallo Thorsten,
aus einer Mappe die diesen Ereigniscode für "Diese Arbeitsmappe" enthält etwas zu kopieren oder zu drucken... :D
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws    As Worksheet
Me.Unprotect "test"
For Each ws In Me.Sheets
If ws.CodeName <> "Tabelle1" Then ws.Visible = xlSheetVeryHidden
Next
Me.Save
End Sub


Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
End Sub


Private Sub Workbook_Open()
Dim ws    As Worksheet
With Application
.Interactive = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableCancelKey = xlDisabled
End With
If Me.ProtectWindows = True Or Me.ProtectStructure = True Then _
Me.Unprotect "test"
Me.Windows(1).WindowState = xlMaximized
For Each ws In Me.Sheets
If ws.ProtectContents = True Then _
ws.Unprotect "test"
ws.Visible = xlSheetVisible
ws.EnableSelection = xlNoSelection
ws.Protect "test"
Next
Me.Protect "test", True, True
With Application
.EnableCancelKey = xlInterrupt
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
.Interactive = True
End With
End Sub

Ist nur eine Demo, wie leicht zumindest das verhindert werden kann.
Willst Du nicht ganz so restriktiv vorgehen, dann verwende statt
ws.EnableSelection = xlNoSelection
ws.EnableSelection = xlUnlockedCells
dann kann man zumindest noch alle ungeschützten Zellen bearbeiten.
In der "Tabelle1" ( darf sogar vom Anwender umbenannt werden ) würde ich dabei nur in
Balkenlettern "WILLKOMMEN" mitten auf den sichtbaren Bereich schreiben.
Unterbindet der Anwender die Ausführung der Makros, sitzt er trotzdem nur vor eben diesem Blatt.
Dann noch das Projekt per Passwort geschützt und fast alle Mitarbeiter meiner Firma hätten keine Möglichkeit mehr, ein Blatt zu drucken.
Wenn der Anwender natürlich ein Tool zum Passwort knacken hat, nützt das leider alles nichts...
Servus aus dem Salzkammergut
Franz
Anzeige
AW: versuche doch mal...
11.04.2005 19:49:24
FP
Hallo Thorsten,
aus einer Mappe die diesen Ereigniscode für "Diese Arbeitsmappe" enthält etwas zu kopieren oder zu drucken... :D
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws    As Worksheet
Me.Unprotect "test"
For Each ws In Me.Sheets
If ws.CodeName <> "Tabelle1" Then ws.Visible = xlSheetVeryHidden
Next
Me.Save
End Sub


Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
End Sub


Private Sub Workbook_Open()
Dim ws    As Worksheet
With Application
.Interactive = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableCancelKey = xlDisabled
End With
If Me.ProtectWindows = True Or Me.ProtectStructure = True Then _
Me.Unprotect "test"
Me.Windows(1).WindowState = xlMaximized
For Each ws In Me.Sheets
If ws.ProtectContents = True Then _
ws.Unprotect "test"
ws.Visible = xlSheetVisible
ws.EnableSelection = xlNoSelection
ws.Protect "test"
Next
Me.Protect "test", True, True
With Application
.EnableCancelKey = xlInterrupt
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
.Interactive = True
End With
End Sub

Ist nur eine Demo, wie leicht zumindest das verhindert werden kann.
Willst Du nicht ganz so restriktiv vorgehen, dann verwende statt
ws.EnableSelection = xlNoSelection
ws.EnableSelection = xlUnlockedCells
dann kann man zumindest noch alle ungeschützten Zellen bearbeiten.
In der "Tabelle1" ( darf sogar vom Anwender umbenannt werden ) würde ich dabei nur in
Balkenlettern "WILLKOMMEN" mitten auf den sichtbaren Bereich schreiben.
Unterbindet der Anwender die Ausführung der Makros, sitzt er trotzdem nur vor eben diesem Blatt.
Dann noch das Projekt per Passwort geschützt und fast alle Mitarbeiter meiner Firma hätten keine Möglichkeit mehr, ein Blatt zu drucken.
Wenn der Anwender natürlich ein Tool zum Passwort knacken hat, nützt das leider alles nichts...
Servus aus dem Salzkammergut
Franz
Anzeige
AW: versuche doch mal...
12.04.2005 10:45:33
Torsten
Hallo Franz,
vielen Dank für Deine Ausführungen.
Den Teil mit "ws.EnableSelection = xlNoSelection" werde ich mir mal genauer anschauen und vielleicht auch einbauen.
Gruß nach Österreich
Torsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige