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

Forumthread: Workbook vor manueller Änderung schützen nur VBA

Workbook vor manueller Änderung schützen nur VBA
01.06.2016 10:48:47
Zoe
Hallo,
ich habe mein Workbook jetzt soweit fertig programmiert, jetzt möchte ich es schützen.
Allerdings nicht einfach nur Blatt schützen, sondern das gesamte Workbook soll vor manuellen eingriffen geschützt sein, nur per Makro (ich habe ein par Buttons die entsperrt sind und die Zellen ändern) dürfen Zellen in diesem Workbook geändert werden. Ist das möglich so zu Programmieren?
Also man soll nur mit den Buttons und Userformen die aufgehen das Workbook steuern können.
Liebe grüße,
Zoe

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Workbook vor manueller Änderung schützen nur VBA
01.06.2016 11:32:37
Zoe

Sub CommandButton()
ActiveWorkbook.Unprotect
Application.ScreenUpdating = False
Worksheets("Tabelle1").Activate
[B25] = 1
Call Import_mit_Dialog
Call Kopieren_Daten
Call axial_tangetial_berechnen
ActiveWorkbook.Protect Structure:=True, Windows:=False
End Sub
So habe ichs jetzt probiert, nur es funktioniert irgendwie nicht?!
Jemand eine Idee?
Grüße,
Zoe

Anzeige
Workbook vor manueller Änderung schützen nur VBA
01.06.2016 12:48:12
Rudi
Hallo,
am besten so:
Private Sub Workbook_Open()
Dim wks As Worksheet
For Each wks In Worksheets
wks.Protect Password:="abcde", userinterfaceonly:=True
Next
End Sub
Gruß
Rudi

AW: Workbook vor manueller Änderung schützen nur VBA
01.06.2016 13:00:05
Zoe
Hallo Rudi,
ja das Problem hierbei ist, wenn ich jetzt per Makro Daten Reinlade und mit meinem Button Berechnungen ausführen will. Dann sagt Excel mir, Fehler 1004, das Blatt ist schreibgeschützt..."
Aber mit Makro soll es beschrieben werden können nur eben nicht manuell mit Zelle anklicken und Zahl eintippen.
Ich hab irgendwo gelesen, dass man am Anfang des auszuführenden Makro die Sperrung aufheben und am Ende wieder sperren kann, aber ich habs versucht irgendwie gibt es immer Fehler.
Liebe Grüße,
Zoe

Anzeige
Workbook vor manueller Änderung schützen nur VBA
01.06.2016 13:04:42
Rudi
Hallo,
der Parameter userinterfaceonly:=True lässt Änderungen durch Makros zu.
Es werden nur Änderungen über die Benutzeroberfläche (UserInterface) verhindert.
Gruß
Rudi

AW: Workbook vor manueller Änderung schützen nur VBA
01.06.2016 13:06:57
Zoe
Habe es mit Workbook_Open und dann noch um mein Makro gebaut, jetzt geht es Danke!!!
Sub CommandButton()
Dim wks As Worksheet
For Each wks In Worksheets
wks.Unprotect ("abcde")
Next
'Makro
For Each wks In Worksheets
wks.Protect
Next
End Sub

Anzeige
wenn du unbedingt willst
01.06.2016 14:11:31
Rudi
Hallo,
mit
wks.Protect
killst du natürlich userinterfaceonly:=True wieder.
Gruß
Rudi
Anzeige
Anzeige

Infobox / Tutorial

Workbook vor manueller Änderung schützen mit VBA


Schritt-für-Schritt-Anleitung

Um ein Workbook in Excel vor manuellen Änderungen zu schützen und gleichzeitig über Makros zugänglich zu machen, kannst du folgende Schritte befolgen:

  1. Workbook öffnen und schützen: Füge den folgenden Code in das ThisWorkbook-Modul ein. Dieser Code schützt das gesamte Workbook und erlaubt Änderungen über Makros.

    Private Sub Workbook_Open()
        Dim wks As Worksheet
        For Each wks In Worksheets
            wks.Protect Password:="abcde", UserInterfaceOnly:=True
        Next
    End Sub
  2. Makro zum Entsperren und Ändern der Zellen: Verwende den folgenden Code in deinem Makro, um das Workbook zu entsperren, die gewünschten Änderungen vorzunehmen und es anschließend wieder zu schützen.

    Sub CommandButton()
        Dim wks As Worksheet
        For Each wks In Worksheets
            wks.Unprotect ("abcde")
        Next
        ' Hier kannst du deine Makro-Funktionen aufrufen
        ' Beispiel:
        Worksheets("Tabelle1").Range("B25").Value = 1
        ' ...
        For Each wks In Worksheets
            wks.Protect Password:="abcde"
        Next
    End Sub

Häufige Fehler und Lösungen

  • Fehler 1004: "Das Blatt ist schreibgeschützt": Dieser Fehler tritt auf, wenn du versuchst, eine Zelle zu ändern, während das Blatt geschützt ist. Stelle sicher, dass du das Blatt mit wks.Unprotect entsperrst, bevor du Änderungen vornimmst.

  • UserInterfaceOnly wird nicht beachtet: Wenn du das Workbook mit wks.Protect ohne den Parameter UserInterfaceOnly:=True schützt, wird die Möglichkeit, über Makros Änderungen vorzunehmen, entfernt. Achte darauf, diesen Parameter zu verwenden, wenn du das Workbook schützt.


Alternative Methoden

Eine andere Möglichkeit, das Workbook zu schützen, ist die Verwendung von ActiveWorkbook.Protect. Dies kann nützlich sein, wenn du das Workbook programmatisch schützen möchtest, ohne die einzelnen Arbeitsblätter anzusprechen:

ActiveWorkbook.Protect Structure:=True, Windows:=False

Denke daran, dass du auch das Workbook mit ActiveWorkbook.Unprotect entsperren kannst, bevor du Änderungen vornimmst.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du das Workbook schützen und gleichzeitig Makros verwenden kannst:

  • Datenimport und -verarbeitung:

    Sub DatenImport()
        ActiveWorkbook.Unprotect ("abcde")
        ' Datenimport-Funktionen hier einfügen
        ActiveWorkbook.Protect Structure:=True, Windows:=False
    End Sub
  • Automatisierte Berechnungen:

    Sub Berechnung()
        ActiveWorkbook.Unprotect ("abcde")
        ' Berechnungslogik hier einfügen
        ActiveWorkbook.Protect Structure:=True, Windows:=False
    End Sub

Tipps für Profis

  • Passwortschutz: Wenn du dein Workbook mit einem Passwort schützen möchtest, kannst du den Code anpassen, um ein Passwort für das Protect- und Unprotect-Kommando zu verwenden.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deinen Makros, um unerwartete Fehler abzufangen und das Workbook gegebenenfalls wieder zu schützen.

  • Dokumentation: Kommentiere deinen Code gründlich, damit du und andere Benutzer schnell verstehen, was jeder Teil des Codes bewirken soll.


FAQ: Häufige Fragen

1. Wie kann ich das Workbook dauerhaft schützen, ohne es über Makros zu entsperren?
Du kannst das Workbook mit ActiveWorkbook.Protect schützen, jedoch ist es dann nicht mehr möglich, Änderungen über Makros vorzunehmen.

2. Was bedeutet der Parameter UserInterfaceOnly?
Dieser Parameter ermöglicht es, dass Makros weiterhin Änderungen an geschützten Blättern vornehmen können, während manuelle Änderungen durch den Benutzer verhindert werden.

3. Wie kann ich sicherstellen, dass alle Blätter richtig geschützt sind?
Verwende eine Schleife über alle Worksheets, um jedes Blatt mit dem Code wks.Protect zu schützen. Achte darauf, den Schutz mit dem richtigen Passwort zu setzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige