Kopierschutz auf offener Exceltabelle?

Hallo

habe ein geniales Makro geschrieben. Je nach User blendet das Blatt andere Zeilengruppierungen ein oder aus.
Die sensiblen Daten sind jeweils nur für den entsprechenden User bestimmt. Zusätzlich muss der User auch Eingaben machen. Wurde ebenfalls mit Makro und Zeileneinfügen/löschen gelöst.

Nun kann der findige Anwender den ganzen Blattrange kopieren (über die Gruppierungen hinweg) und in einem neuen Excelblatt einfügen. Mit diesem Schritt werden ihm alle Zellen (auch die gruppierten) voll angezeigt.

Frage: gibt es eine Möglichkeit die Gruppierungen vor dem kopieren zu schützen resp. den Kopierbefehl mittels Makro auszuschalten?

Vielen Dank für die Lösung
Urs

Frage: gibt es eine Möglichkeit die Gruppierungen vor dem
kopieren zu schützen resp. den Kopierbefehl mittels Makro
auszuschalten?
Vielen Dank für die Lösung

Hi Urs,
„die Lösung“? *gg entweder gibt es keine (bekannte) oder mehrere :smile:
Versteh ich dich richtig , du willst Strg-C, Bearbeiten–kopieren, Kontextmenu-kopieren deaktivieren?
Dann müsstest du aber auch Strg-X, Bearbeiten–Ausschneiden usw ebenfalls deaktivieren.
Natürlich auch „Gehe zu“ denn damit lese ich auch in ausgruppierten Zellen.
Wer weiss was da noch alles deaktiviert werden müsste.
Gruß
Reinhard

Hi Reinhard
Sorry das ich dich mit meinen Fragen belästigen muss. Aber ich denke für den OTTO-Normaluser genügt, wenn ich Strg-C,
Bearbeiten–kopieren, Kontextmenu-kopieren deaktivieren?
Strg-X, Bearbeiten–Ausschneiden deaktivieren würde.
Welche Befehle müsste ich da anwenden?

Vielen Dank

Urs

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Str-C bzw Str-X sind einfach

Sorry das ich dich mit meinen Fragen belästigen muss. Aber ich
denke für den OTTO-Normaluser genügt, wenn ich Strg-C,
Bearbeiten–kopieren, Kontextmenu-kopieren deaktivieren?
Strg-X, Bearbeiten–Ausschneiden deaktivieren würde.
Welche Befehle müsste ich da anwenden?

Hi Urs,
man kann Str-C und Strg-X direkt per Makro ausschalten aber vielleicht wäre meine untere Lösung brauchbarer, denn mit den drei Makros funktionieren Strg-C und Strg-X in nichtgruppierten Zellenbereichen weiter, es git nur eine Meldung wenn versucht wird gruppierte Bereiche zu kopieren7auszuschneiden.
Achja, die drei Makros in ein normales Modul reinkopieren, dann unter extras–makro–makros—optionen für die beiden sichtbaren Makros die entsprechenden Tastaturkürzel c und x vergeben.
Gruß
Reinhard

Sub kopier()
 check ("C")
End Sub
Sub ausschn()
 check ("X")
End Sub
Sub check(b As String)
'If Selection.Cells.Count \> 1 Then
 unsicht = 0
 For Each ze In Selection.Rows
 If ze.Hidden = True Then unsicht = unsicht + 1
 Next ze
 If unsicht \> 0 Then
 MsgBox "Es ist nicht erlaubt unsichtbare Zellen auszuschneiden/zu kopieren."
 Range("A1").Select
 Else
 'MsgBox "ok"
 If b = "C" Then Selection.Copy
 If b = "X" Then Selection.Cut
 End If
'End If
End Sub

Sorry das ich dich mit meinen Fragen belästigen muss. Aber ich
denke für den OTTO-Normaluser genügt, wenn ich Strg-C,
Bearbeiten–kopieren, Kontextmenu-kopieren deaktivieren?
Strg-X, Bearbeiten–Ausschneiden deaktivieren würde.
Welche Befehle müsste ich da anwenden?

Hi Urs,
man kann Str-C und Strg-X direkt per Makro ausschalten aber
vielleicht wäre meine untere Lösung brauchbarer, denn mit den
drei Makros funktionieren Strg-C und Strg-X in
nichtgruppierten Zellenbereichen weiter, es git nur eine
Meldung wenn versucht wird gruppierte Bereiche zu
kopieren7auszuschneiden.
Achja, die drei Makros in ein normales Modul reinkopieren,
dann unter extras–makro–makros—optionen für die beiden
sichtbaren Makros die entsprechenden Tastaturkürzel c und x
vergeben.
Gruß
Reinhard

Funktioniert tadellos. Nur kann ich über die rechte Maustaste und das Menu immer noch den Kopierbefehl ausführen.
Ich denke aber alles auszuschliessen ist wirklich zu kompliziert.
Gruss
Urs

Harte Deaktivierung

Funktioniert tadellos. Nur kann ich über die rechte Maustaste
und das Menu immer noch den Kopierbefehl ausführen.
Ich denke aber alles auszuschliessen ist wirklich zu
kompliziert.
Gruss
Urs

Hi Urs,
nachfolgend ein Code aus dem Internet, er deaktiviert mehrere Dinge.
(Es fehlt noch der Copy-Button in der Symbolleiste)
Mit testaus bzw testein kannste rumprobieren ohne immer die Arbeitsmappe öffnen schliessen zu müssen.
Gruß
Reinhard

in "DIESEARBEITSMAPPE"
Option Explicit
Private Sub Workbook\_Open()
procKopierenAusschneidenAus
End Sub
Private Sub Workbook\_BeforeClose(Cancel As Boolean)
procKopierenAusschneidenEin
End Sub
Sub testaus()
procKopierenAusschneidenAus
End Sub
Sub testein()
procKopierenAusschneidenEin
End Sub


In ein MODUL:
Option Explicit
'Ihnen stehen damit die Prozeduren
'"procKopierenAusschneidenAus" sowie
'"procKopierenAusschneidenEin" zum Deaktivieren bzw.
'Einschalten der Kopier-Funktionen zur Verfuegung, die Sie
'nun noch ueber entsprechende Ereignisprozeduren automatisch
'aufrufen muessen. In der Regel bietet es sich an, die
'Schutzfunktion einzuschalten, wenn die Arbeitsmappe
'geoeffnet wird und den alten Zustand beim Schliessen der
'Datei wiederherzustellen. Verwenden Sie dazu die folgenden
'Prozeduren im Modul "Diese Arbeitsmappe":


Sub procKopierenAusschneidenAus()
'Tastenkombinationen deaktivieren
Application.OnKey "^x", ""
Application.OnKey "^c", ""
Application.OnKey "^v", ""
Application.OnKey "+{DEL}", ""
Application.OnKey "+{INSERT}", ""

'Drag & Drop ausschalten
Application.CellDragAndDrop = False

' Schaltflaechen deaktivieren
procControlEnableDisable 21, False ' Ausschneiden
procControlEnableDisable 19, False 'Kopieren
procControlEnableDisable 22, False 'Einfuegen
procControlEnableDisable 755, False 'Inhalte einfuegen

End Sub

Sub procKopierenAusschneidenEin()
'Tastenkombinationen einschalten
Application.OnKey "^x"
Application.OnKey "^c"
Application.OnKey "^v"
Application.OnKey "+{DEL}"
Application.OnKey "+{INSERT}"

'Drag & Drop wieder erlauben
Application.CellDragAndDrop = True

' Schaltflaechen aktivieren
procControlEnableDisable 21, True ' Ausschneiden
procControlEnableDisable 19, True 'Kopieren
procControlEnableDisable 22, True 'Einfuegen
procControlEnableDisable 755, True 'Inhalte einfuegen

End Sub

Sub procControlEnableDisable(intId As Integer, bolStatus As Boolean)
On Error Resume Next 'sonst Fehler bei clipboard
Dim cmbSuche As CommandBar
Dim cmbcSteuerelement As CommandBarControl

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

Verbesserung
Hallo,
hab mich woanders erkundigt, und bekam prompt eine verbesserte Version, diesmal ist auch der Copy-Button auf der clipboard deaktiviert, dadurch dass das Clipboard deaktiviert ist, somit kann die On error resume next entfallen was immer gut ist.
Im vorgehenden Code die
Sub Sub procControlEnableDisable(intId As Integer, bolStatus As Boolean)
durch nachfolgenden Code austauschen.
Gruß
Reinhard

Sub procControlEnableDisable(intId As Integer, bolStatus As Boolean)
 Dim cmbcSteuerelement As CommandBarControl
 For Each cmbSuche In Application.CommandBars
 If cmbSuche.Name = "Clipboard" Then
 cmbSuche.Enabled = bolStatus
 Else
 Set cmbcSteuerelement = cmbSuche.FindControl(Id:=intId, recursive:=True)
 If Not cmbcSteuerelement Is Nothing Then cmbcSteuerelement.Enabled = bolStatus
 End If
 Next
End Sub

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Reinhard
War in den Ferien.
Werde das mal ausprobieren.
Vielen Dank
Urs