Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kopieren und Einfügen unterbinden

Forumthread: Kopieren und Einfügen unterbinden

Kopieren und Einfügen unterbinden
31.10.2002 18:24:37
rainer
Hallo ihr Lieben,
folgende Situation:

• Das Tabellenblatt ist geschützt.
• Eingabezellen enthalten "bedingte Formatierungen" und Gültigkeitsbeschränkungen.
• Eingabezellen sind natürlich nicht gesperrt.

Leider ist es trotz Schreibschutz möglich, die Formatierungen der Eingabezellen zu "zerstören" - durch Kopieren und Einfügen. Eine einmal "zerstörte" Formatierung läßt sich aber nicht wieder herstellen, weil das der Schreibschutz verbietet.
Fazit: Die Tabelle ist unbrauchbar!

Läßt sich einem geschützten Tabellenblatt per VBA-Code das Kopieren, oder zumindest das Einfügen verhindern?

Vielen Dank im voraus
Gruß rainer



Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Kopieren und Einfügen unterbinden
31.10.2002 18:35:04
geri
Rainer

gehe zu Beitag
https://www.herber.de/forum/archiv/172to176/t173544.htm

hoffe es hilft Dir weiter

geri

Re: Kopieren und Einfügen unterbinden
31.10.2002 19:09:06
Ron Andres
Hier ist der Quellcode. Hatte vor Tagen das gleiche Problem!

Kopiere alles ins Modul der Arbeitsmappe. Läuft unter 97 ohne Probleme. Bei 2000 hatte ich bis jetzt auch noch keine!

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
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

Option Explicit

Private Sub Workbook_Open()
procKopierenAusschneidenAus
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
procKopierenAusschneidenEin
End Sub


Gruß Ron

Anzeige
fast perfekt Kopieren und Einfügen unterbinden
31.10.2002 19:19:52
geri
es Funtioniert, aner man kann Makro via EXTRA-Macro .... wieder ausschalten mann müsste noch da wiederaktivieren per PAsswort verriegeln können
Re: Kopieren und Einfügen unterbinden
31.10.2002 21:59:42
Dieter Maj
Hallo Ron

find ich prima, sich mit fremden Federn zu schmücken.
Hab dieses Makro mit ein bischen Gehirnschmalz zusammengebastelt und es vor 3 Tagen hier ins Forum gestellt.
Ein Hinweis deinerseits wär bestimmt fair gewesen.

Grüsse
Dieter

Anzeige
Re: Kopieren und Einfügen unterbinden
31.10.2002 22:34:36
geri
Hallo Dieter
ich glaube er wollte sich nicht (wissentlich) schmücken glaube es war ein LAPSUS, ich hatte auf Archiv verwiesen und Ron hat es einfach umkopiert, mit glaube ich kleiner Anpassung
gruss geri
Re: Kopieren und Einfügen unterbinden
02.11.2002 17:59:37
Rainer
Vielen Dank an Geri, Ron Andres und Dieter!

Klappt wunderbar - ich hätte mir sonst einen Wolf geschrieben, um alle Formatierungen abzufangen.

Grüße aus Essen
Rainer

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Kopieren und Einfügen unterbinden in Excel


Schritt-für-Schritt-Anleitung

Um das Kopieren und Einfügen auf einem geschützten Excel-Tabellenblatt zu verhindern, kannst du den folgenden VBA-Code verwenden. Dieser Code deaktiviert die Kopier- und Ausschneide-Funktionen:

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Klicke im Projekt-Explorer mit der rechten Maustaste auf "Diese Arbeitsmappe" und wähle "Einfügen" > "Modul".
  3. Füge den folgenden Code in das Modul ein:
Option Explicit

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

    ' Schaltflächen deaktivieren
    procControlEnableDisable 21, False ' Ausschneiden
    procControlEnableDisable 19, False ' Kopieren
    procControlEnableDisable 22, False ' Einfügen
    procControlEnableDisable 755, False ' Inhalte einfügen
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

    ' Schaltflächen aktivieren
    procControlEnableDisable 21, True ' Ausschneiden
    procControlEnableDisable 19, True ' Kopieren
    procControlEnableDisable 22, True ' Einfügen
    procControlEnableDisable 755, True ' Inhalte einfügen
End Sub

Sub procControlEnableDisable(intId As Integer, bolStatus As Boolean)
    On Error Resume Next
    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

Private Sub Workbook_Open()
    procKopierenAusschneidenAus
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    procKopierenAusschneidenEin
End Sub
  1. Schließe den VBA-Editor und speichere die Arbeitsmappe als Excel-Makro-aktivierte Arbeitsmappe (*.xlsm).
  2. Schütze das Tabellenblatt, um die Eingabezellen zu sichern.

Häufige Fehler und Lösungen

  • Fehler: Makro funktioniert nicht, wenn die Arbeitsmappe geschlossen wird.

    • Lösung: Stelle sicher, dass du die Workbook_Open und Workbook_BeforeClose Prozeduren korrekt implementiert hast.
  • Fehler: Drag & Drop ist trotz des Codes immer noch aktiv.

    • Lösung: Überprüfe, ob der Befehl Application.CellDragAndDrop = False korrekt gesetzt ist.
  • Fehler: Das Kopieren und Einfügen ist nach dem Schließen und Wiederöffnen der Datei möglich.

    • Lösung: Der Schutz muss beim Öffnen der Arbeitsmappe erneut aktiviert werden.

Alternative Methoden

  • Zellenschutz: Du kannst auch den Zellenschutz nutzen, um zu verhindern, dass bestimmte Zellen bearbeitet werden. Diese Methode ist jedoch weniger effektiv, wenn Benutzer die Formatierungen dennoch ändern können.

  • Benutzerformulare: Erstelle ein Benutzerformular für die Eingaben, sodass Benutzer nicht direkt auf die Zellen zugreifen können.


Praktische Beispiele

Ein Beispiel für den Einsatz des Codes könnte wie folgt aussehen:

  1. Du möchtest ein Datenblatt erstellen, auf dem nur bestimmte Daten eingegeben werden dürfen, ohne dass Formatierungen verloren gehen.
  2. Füge den oben genannten Code in dein Excel-Dokument ein und schütze das Blatt. Dadurch wird das Kopieren und Einfügen für die Benutzer effektiv verhindert.

Tipps für Profis

  • Passwortschutz: Überlege, den Zugang zum Makro mit einem Passwort zu sichern, um unbefugten Zugriff zu verhindern.
  • Regelmäßige Sicherung: Mache regelmäßig Sicherungskopien deiner Dateien, um Formatierungen und Daten zu schützen.
  • Makros optimieren: Teste den Code gründlich in verschiedenen Excel-Versionen, um sicherzustellen, dass er überall funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich das Kopieren und Einfügen in Excel verhindern?
Du kannst VBA verwenden, um die Tastenkombinationen für Kopieren und Einfügen zu deaktivieren.

2. Funktioniert dieser Code in allen Excel-Versionen?
Der bereitgestellte Code sollte in Excel 97, 2000 und neueren Versionen funktionieren, kann jedoch in neueren Versionen wie Excel 365 getestet werden.

3. Was passiert, wenn ich den Schutz des Blattes aufhebe?
Wenn der Schutz aufgehoben wird, können Benutzer wieder kopieren und einfügen, es ist also wichtig, den Schutz aktiv zu halten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige