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

VBA-excel Office-Zwischenablage deaktivieren

Forumthread: VBA-excel Office-Zwischenablage deaktivieren

VBA-excel Office-Zwischenablage deaktivieren
29.01.2019 18:43:45
Kniffler
Hallo liebe Mitstreiter,
ich suche eine Möglichkeit der Nutzerbeschränkung und zwar den Zugriff auf die Office-Zwischenablage zu deaktivieren und für Berechtigte wieder zu aktivieren.
Per Mausklick ist das schnell zu verwirklichen: Start - Zwischenablage - Menuband anpassen - Zwischenablage - entfernen.
Wie geht dies in VBA? Alle Einzelbefehle habe ich schon drin, z. B. Rechte Maus. Sobald ich Zellen selektiere kann ich trotzdem über Start ausschneiden, kopieren, einfügen...
Das gleiche gilt für Zellen; Verbinden und Zentrieren.
Danke für Euren geschätzten Rat.
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-excel Office-Zwischenablage deaktivieren
29.01.2019 18:57:18
Hajo_Zi
Application.CutCopyMode = False

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: VBA-excel Office-Zwischenablage deaktivieren
29.01.2019 19:14:33
onur
Zwischenablage ist einfach:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
Application.CellDragAndDrop = False
End Sub

Anzeige
AW: VBA-excel Office-Zwischenablage deaktivieren
29.01.2019 19:21:28
Nepumuk
Hallo,
der XML-Code:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon>
<tabs>
<tab idMso="TabHome">
<group idMso="GroupClipboard" getVisible="group_getVisible">

</group>
</tab>
</tabs>
</ribbon>
</customUI>

Der Code im Modul "DieseArbeitsmappe":
Option Explicit

Private Sub Workbook_Open()
    Select Case Environ$("USERNAME")
        Case "Paul", "Peter" 'Windowsnamen der Benutzer die Zugriff haben
            gblnGroupVisible = True
    End Select
End Sub

In ein Standardmodul:
Option Explicit

Public gblnGroupVisible As Boolean

Private Sub Group_getVisible( _
        ByRef probjControl As IRibbonControl, _
        ByRef prvntRreturnedValue As Variant)

    prvntRreturnedValue = gblnGroupVisible
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA-excel Office-Zwischenablage deaktivieren
29.01.2019 19:26:02
Nepumuk
Achso,
du kannst einzelne Buttons nicht per XML ausblenden, nur ganze Gruppen. Das wäre dann die Gruppe GroupAlignmentExcel.
Gruß
Nepumuk
AW: VBA-excel Office-Zwischenablage deaktivieren
30.01.2019 10:22:38
Kniffler
Hallo Mitstreiter,
danke für Eure Ratschläge.
Application.CutCopyMode = False
Application.CellDragAndDrop = False
war drin. Da blieb das Menuband unbeeindruckt. Danke @Nepumuk für deine Variante mit der Arbeit mit dem Custom UI Editor, die ich gerade teste. Leider funzt dies bei mir noch nicht. Das Programm bleibt im Standardmodul bei dem ByRef-Argument hängen mit dem Kommentar "Fehler beim Kompilieren: Ein Modul hat einen unzulässigen Typ". Was kann ich alternativ tun? LG
Anzeige
AW: VBA-excel Office-Zwischenablage deaktivieren
30.01.2019 10:29:22
onur
Habe ich was vom Menüband erzählt? Hast du aber nicht getestet - oder?
Menüband sehen können und benutzen können, sind 2 verschiedene ....
AW: VBA-excel Office-Zwischenablage deaktivieren
30.01.2019 10:33:00
onur
Auch wenn du das Menüband nicht sehen kannst, kannst du immer noch mit Ctrl C und V immer noch Cooy/Pasten.
AW: VBA-excel Office-Zwischenablage deaktivieren
30.01.2019 10:38:23
onur
Oder mit rechter Maustaste oder per Drag and Drop.
Anzeige
AW: VBA-excel Office-Zwischenablage deaktivieren
30.01.2019 11:19:35
Nepumuk
Hallo,
den Fehler kann ich nicht nachvollziehen. Teste mal mit meiner Mappe:
https://www.herber.de/bbs/user/127282.xlsm
Gruß
Nepumuk
AW: VBA-excel Office-Zwischenablage deaktivieren
30.01.2019 13:24:01
Kniffler
Hallo Nepumuk,
großartig. Jetzt klappts. Bei der mitgesandten Beispieldatei war noch bei der custom UI beides (Office 2007, 2010) hinterlegt. Ich habe beide übernommen. Jetzt kommt der Fehler nicht mehr. Dankesehr. Liebe Grüße vom Kniffler
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Office-Zwischenablage deaktivieren mit VBA


Schritt-für-Schritt-Anleitung

Um die Office-Zwischenablage zu deaktivieren, kannst Du den folgenden VBA-Code verwenden. Dieser Code sorgt dafür, dass die Zwischenablage beim Selektieren von Zellen deaktiviert wird:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Application.CutCopyMode = False
    Application.CellDragAndDrop = False
End Sub

Füge diesen Code in das Modul „DieseArbeitsmappe“ Deiner Excel-Datei ein. Dieser Befehl deaktiviert die Funktionsweise der Zwischenablage, sodass Benutzer keine Zellen mehr ausschneiden oder kopieren können.


Häufige Fehler und Lösungen

  1. Fehler beim Kompilieren: Ein Modul hat einen unzulässigen Typ.

    • Lösung: Stelle sicher, dass Du alle erforderlichen Module korrekt eingefügt hast und die Syntax keine Fehler enthält. Achte darauf, dass Du ByRef richtig verwendest.
  2. Die Zwischenablage funktioniert trotzdem.

    • Lösung: Vergewissere Dich, dass der Code im richtigen Modul platziert ist und dass Du die Datei speicherst, bevor Du die Funktionen testest.

Alternative Methoden

Eine alternative Methode, um die Office-Zwischenablage zu deaktivieren, besteht darin, das Menüband anzupassen. Du kannst dazu den Custom UI Editor verwenden. Hierbei wird die Sichtbarkeit der gesamten Gruppe „Clipboard“ für bestimmte Benutzer eingeschränkt. Der XML-Code dazu könnte wie folgt aussehen:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon>
        <tabs>
            <tab idMso="TabHome">
                <group idMso="GroupClipboard" getVisible="group_getVisible">
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

In einem Standardmodul kannst Du dann den entsprechenden Code hinzufügen, um die Sichtbarkeit basierend auf dem Benutzernamen zu steuern.


Praktische Beispiele

Hier ist ein Beispiel, wie Du die Sichtbarkeit der Zwischenablage für bestimmte Benutzer einstellen kannst:

Option Explicit
Public gblnGroupVisible As Boolean

Private Sub Group_getVisible( _
    ByRef probjControl As IRibbonControl, _
    ByRef prvntRreturnedValue As Variant)
    prvntRreturnedValue = gblnGroupVisible
End Sub

Private Sub Workbook_Open()
    Select Case Environ$("USERNAME")
        Case "Paul", "Peter" 'Windowsnamen der Benutzer die Zugriff haben
            gblnGroupVisible = True
        Case Else
            gblnGroupVisible = False
    End Select
End Sub

Dieses Beispiel stellt sicher, dass nur die Benutzer „Paul“ und „Peter“ Zugriff auf die Zwischenablage haben.


Tipps für Profis

  • Nutze Application.CutCopyMode = False nach jeder Operation, um sicherzustellen, dass die Zwischenablage deaktiviert bleibt.
  • Teste immer Deine VBA-Codes in einer Testumgebung, bevor Du sie auf kritische Dateien anwendest.
  • Achte darauf, dass Du alle Änderungen dokumentierst, um spätere Anpassungen zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich die Zwischenablage für alle Benutzer deaktivieren?
Du kannst den VBA-Code so anpassen, dass gblnGroupVisible immer auf False gesetzt wird.

2. Funktioniert dieser Code in allen Excel-Versionen?
Die beschriebenen Methoden funktionieren in den meisten modernen Excel-Versionen, insbesondere in Excel 2007 und später. Achte darauf, die VBA-Umgebung entsprechend einzurichten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige