Mit VBA, die Befehle Drucken und Kopieren verhindern

Hallo zusammen,
Ich habe eine schöne Tabelle gemacht und andere machen Mist damit.
Nun möchte ich, dass diese weder gedruckt, noch kopiert werden kann.

Meine Frage:
Kann man dies mit einem Makro erledigen oder könnte ich das Problem anders lösen?
Auf jeden Fall sollen diese beiden Befehle außer Kraft gesetzt werden.

Danke im Voraus.
Bernd

Stichwort Datensicherung
Hallo Bernd,

bei halbwegs erfahrenen VBAler wirst du weder das Kopieren noch das Drucken verhindern können.

Mach dir vor der Weiteragabe deiner Tabelle eine (oder auch mehrere) Kopien, dann hast du bei Bedarf/Verhunzung wieder Ersatz.

Gruß, Andreas

[MOD]: Wort in Titel korrigiert.

Hallo Andreas,
ja das habe ich auch gemacht und es müssen ja auch Eintragungen gemacht werden, aber einige kopieren sich die Tabelle und setzen diese danach wieder ein und überschreiben somit die Eintragungen der anderen.
Darum dachte ich, dass ich diese mittels VBA, Makro sperren kann. Das Makro kann dann ja auch mittels Passwort geschützt werden.
Danke Bernd

[MOD]: Wort in Titel korrigiert.

bei halbwegs erfahrenen VBAler wirst du weder das Kopieren
noch das Drucken verhindern können.

Hallo Andreas

Eine grundsätzliche Frage: kann man das, Funktionen wie Drucken oder Kopieren mit Makros verhindern?

Ich stelle mir irgendwie vor, dass man die Befehle „umleitet“
If „drucken“ then Msgbox „irgendwas“

Viele Grüsse
Niclaus

[MOD]: Wort in Titel korrigiert.

Hallo Niclaus,
kann man aus dem Menü das Kopieren oder Drucken unterdrücken?
Danke Bernd

[MOD]: Wort in Titel korrigiert.

Also, kopieren verhindern kann ich mir nicht vorstellen. Schließlich ist ein Screendump immer machbar.

Gegen das Drucken hilt evtl. das Workbook_BeforePrint-Event mit Cancel=True. Und dann noch den Makro mit Passwort schützen. Aber auch da gibt es Gegenmittel:
https://www.google.de/search?q=vba+passwort+umgehen&….

Ich kann mir nicht vorstellen, wie man eine Excelmappe gegen kopieren oder drucken schützen sollte. Echte Experten vor!

Gruß und schönen Abend,
Andreas

[MOD]: Wort in Titel korrigiert.

'nabend Bernd,

such mal in der Excel-Hilfe nach „Verwenden von freigegebenen Arbeitsmappen zur Zusammenarbeit“ oder so ähnlich (der Titel ist aus der Hilfe von Excel2010, ist in 2007 evtl. anders).
Da wird erklärt, wie man Kopien einer Arbeitsmappe, an denen verschiedene Benutzer gearbeitet haben, zusammenführt. Vielleicht hilft dir das weiter.

Gruß, Andreas

[MOD]: Wort in Titel korrigiert.

moin Bernd,

also das Drucken kann man so ausschalten:

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

Hat den Haken, wenn beim Öffnen die Makros abgeschalten werden, klappt das nicht.
Das könnte man versuchen zu verhindern, in dem man wesentliche Teile der Tabelle per Makro erstellt, so dass die Tabelle bei deaktivierten Makros „verstümmelt“ ist.

Kopieren verhindern ist ein wenig schwieriger. Hierzu habe ich ein Makro gefunden, das nicht von mir ist, also ohne Gewähr:

**Sub Aktivieren()  
With Application  
 Rem: Das RollUp Menü, was beim Betätigen der rechten Maustaste erscheint wird aktiviert  
 .CommandBars("Toolbar List").Enabled = True  
 Rem: Die Funktion "Anpassen" Im Menüpunkt "Extras" wird aktiviert  
 .CommandBars("Worksheet Menu Bar"). \_  
 Controls("Extras").Controls("Anpassen...").Enabled = True  
 Rem: Die Funktion "Makro" Im Menüpunkt "Extras" wird aktiviert  
 .CommandBars("Worksheet Menu Bar"). \_  
 Controls("Extras").Controls("Makro").Enabled = True  
 Rem: Die Funktion "Speichern unter" Im Menüpunkt "Datei" wird aktiviert  
 .CommandBars("Worksheet Menu Bar"). \_  
 Controls("Datei").Controls("Speichern unter...").Enabled = True  
 Rem: Die Funktion "Senden an" Im Menüpunkt "Datei" wird aktiviert  
 .CommandBars("Worksheet Menu Bar"). \_  
 Controls("Datei").Controls("Senden an").Enabled = True  
End With  
  
Rem: Tastenkombinationen einschalten  
Application.OnKey "^x"  
Application.OnKey "^c"  
Application.OnKey "^v"  
Application.OnKey "+{DEL}"  
Application.OnKey "+{INSERT}"  
  
Rem: Drag & Drop wieder erlauben  
Application.CellDragAndDrop = True  
  
Rem: Schaltflaechen in Menüleiste =\> Bearbeiten aktivieren  
Rem: Ausschneiden  
procControlEnableDisable 21, True  
Rem: Kopieren  
procControlEnableDisable 19, True  
Rem: Einfuegen  
procControlEnableDisable 22, True  
Rem: Inhalte einfuegen  
procControlEnableDisable 755, True  
Rem: Office-&Zwischenablage  
procControlEnableDisable 809, True  
End Sub  
  
Sub Deaktivieren()  
With Application  
 Rem: Das RollUp Menü, was beim Betätigen der rechten Maustaste erscheint wird deaktiviert  
 .CommandBars("Toolbar List").Enabled = False  
 Rem: Die Funktion "Anpassen" Im Menüpunkt "Extras" wird deaktiviert  
 .CommandBars("Worksheet Menu Bar"). \_  
 Controls("Extras").Controls("Anpassen...").Enabled = False  
 Rem: Die Funktion "Makro" Im Menüpunkt "Extras" wird deaktiviert  
 .CommandBars("Worksheet Menu Bar"). \_  
 Controls("Extras").Controls("Makro").Enabled = False  
 Rem: Die Funktion "Speichern unter" Im Menüpunkt "Datei" wird deaktiviert  
 .CommandBars("Worksheet Menu Bar"). \_  
 Controls("Datei").Controls("Speichern unter...").Enabled = False  
 Rem: Die Funktion "Senden an" Im Menüpunkt "Datei" wird deaktiviert  
 .CommandBars("Worksheet Menu Bar"). \_  
 Controls("Datei").Controls("Senden an").Enabled = False  
End With  
  
Rem: Tastenkombinationen deaktivieren  
Application.OnKey "^x", ""  
Application.OnKey "^c", ""  
Application.OnKey "^v", ""  
Application.OnKey "+{DEL}", ""  
Application.OnKey "+{INSERT}", ""  
  
Rem: Drag & Drop ausschalten  
Application.CellDragAndDrop = False  
  
Rem: Schaltflaechen in Menüleiste =\> Bearbeiten aktivieren  
Rem: Ausschneiden  
procControlEnableDisable 21, False  
Rem: Kopieren  
procControlEnableDisable 19, False  
Rem: Einfuegen  
procControlEnableDisable 22, False  
Rem: Inhalte einfuegen  
procControlEnableDisable 755, False  
Rem: Office-&Zwischenablage  
procControlEnableDisable 809, False  
End Sub  
  
  
Sub procControlEnableDisable(intId As Integer, \_  
bolStatus As Boolean)  
  
Dim cmbSuche As CommandBar  
Dim cmbcSteuerelement As CommandBarControl  
  
On Error Resume Next  
  
For Each cmbSuche In Application.CommandBars  
Set cmbcSteuerelement = \_  
cmbSuche.FindControl(ID:=intId, recursive:=True)  
  
If Not cmbcSteuerelement Is Nothing Then  
cmbcSteuerelement.Enabled = bolStatus  
End If  
Next  
End Sub**  

Deaktivieren beim Start, Aktivieren beim Verlassen.

Wie geschrieben, ist nicht von mir, also hilft nur der Versuch, der Ansatz ist aber interessant. Klappt aber natürlich auch nur mit aktivierten Makros.

Um eine Tabelle nur mit Makros starten zu lassen (das geht auch), muss man allerdings schon ein wenig weiter gehen, das würde aber den Rahmen hier schon sprengen.
Grob umrissen muss eine .exe die Tabelle aufrufen, die über ein Lesekennwort geschützt ist, die .exe übergibt beim Start das Kennwort…

100%ig ist natürlich gar nichts, der wirkliche Profi knackt alles :smile:.

Du kannst mit den Makros ja mal experimentieren, vielleicht klappt es ja; wenn nicht, war es zwar umsonst, dafür aber auch kostenlos :smile:.

Gruß

kokomiko

Danke Andreas, ich werde heute nicht mehr dazukommen.
Probiere es aber dann über Ostern aus und melde mich.
Danke

Hallo kokomiko50,
Danke, ich werde heute nicht mehr dazukommen.
Probiere es aber dann über Ostern aus und melde mich.
Danke