Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Kopierschutz bei einem ExcelSheet





Frage

Wie kann ich ExcelSheet so schützen, dass die Zellinhalte nicht einfach in ein anderes Sheet kopiert werden können.

Antwort 1 von sicci

Hallo Lasso,

Leider gibt es bei Excel keinen integrierten Kopierschutz. Dennoch kann man über VBA einen nur von Kennern knackbaren, also einigermaßen wirksamen Schutz basteln.

Ein Beispiel maile ich Dir zu.
Die Bedingungen und Makros hier auch für alle Mitleser:

Man braucht:

1.   Ein Eröffnungsblatt mit z.B folgendem Text: "Datei nur einsehbar, wenn Makros aktiviert sind - bitte im Menu Extras/Optionen/Allgemein ein Häkchen
bei "Makrovirusschutz" setzten, Mappe schließen und bei nochmaligem Öffnen
in der Startmeldung "Makros aktivieren". (Name des Blattes hier im Beispiel: "Fehlermeldung")

2.    Ein oder mehr weitere Blätter mit den eigentlichen Daten. Im Beispiel hier
gibt es nur ein weiteres Blatt "Sensible Daten".

3.    Drei Makros


Erläuterungen zu den Makros:

1.    Before_Close-Makro
(im Klassenmodul: ´Diese Arbeitsmappe´) setzt alle Kopier-Funktionen auf
"True" = möglich und blendet das Blatt "sensible Daten" aus (xlVeryhidden),
so daß es nicht mehr gesehen oder aktiviert werden kann.
Damit ist das Fehlermeldungs-Blatt das einzig aktivierbare(und sichtbare), wenn die Mappe geöffnet wird.
Wird sie jedoch mit "Makros aktivieren" geöffnet startet das

2.     Workbook_Open-Makro
(im Klassenmodul: ´Diese Arbeitsmappe´), setzt das "Sensible Daten"-Blatt auf ´xlVisible´, das "Fehlermeldungs"-Blatt auf ´xlVeryHidden´ und deaktiviert alle Kopierfunktionen.

3.     Auto_Close-Makro
(in einem allgemeinen Modul) deaktiviert Speichern-Abfrage und Speicherung beim Schließen der Datei, so daß evtll. am Blatt vorgenommene Änderungen nicht gespeichert werden.


Hier die Makros:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim x%
With Sheets("Fehlermeldung")
    .Visible = True
    .Protect "Uups"
End With
Sheets("Sensible Daten").Visible = xlveryhidden
With Application
    .CommandBars("Cell").Enabled = True
    .CommandBars("Edit").Controls("&Kopieren").Enabled = True
    On Error Resume Next
    For x = 1 To CommandBars.Count
        .CommandBars(x).Controls("&Kopieren").Enabled = True
    Next x
    .OnKey ("^" & "c"), ""
    .CutCopyMode = True
End With
End Sub

Private Sub Workbook_Open()
Dim x%
Sheets("Sensible Daten").Visible = True
Sheets("Fehlermeldung").Visible = xlveryhidden
With Application
    .CommandBars("Cell").Enabled = False
    .CommandBars("Edit").Controls("&Kopieren").Enabled = False
    On Error Resume Next
       For x = 1 To Application.CommandBars.Count
         .CommandBars(x).Controls("&Kopieren").Enabled = False
       Next x
    .OnKey ("^" & "c"), ""
    .CutCopyMode = False
End With
End Sub

Sub Auto_Close()
    Application.DisplayAlerts = False
    ActiveWorkbook.Close False
End Sub

Viel Erfolg!
Gruß
sicci


Antwort 2 von sicci

.. sowas, hat sich doch ein Fehler eingeschlichen!

im Auto_Open muß es natürlich:
Close True heißen

sonst wird das "Fehlermeldung"sblatt nicht aktiviert.

Im Workbook_Open sollte deshalb dem Sensibel-Blatt mit sheets("Sensible Daten").protect "sensibel" ein Schreibschutz verpaßt werden.

Gruß
sicci

Antwort 3 von sicci

nein, ich bin (noch) nicht besoffen ..

also: im Auto_Close ... Close True
und im Workbook_Open den Schreibschutz

Jeden weitren Fehler werd ich jetzt ignorieren ;-)

Antwort 4 von Lasso

Danke ich werde das mal versuchen

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: