Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Schreibschutz per VBA setzen

Schreibschutz per VBA setzen
09.01.2007 10:45:05
Volker
Hallo,
ich habe eine Frage und hoffe bei einem Experten Hilfe zu finden:
Ich habe eine Excel-Datei für die ich auf ganz normalem Weg ein Schreibschutzkennwort vergeben habe. Das hat logischerweise zur Folge, dass jeder, der die Datei öffnet, die Möglichkeit hat das Kennwort einzugeben oder den Button "schreibschutz" zu drücken. Ich möchte aber, dass bei allen Personen, die nicht einer vorher definierten Gruppe angehören, der Schreibschutz automatisch gesetzt wird, wenn die Datei startet. Er soll nichts mehr drücken müssen.
Mein Weg wäre per "...workbook open..." den angemeldeten Benutzer zu überprüfen (wie das geht ist mir bekannt) und dann für alle die, die nicht einer bestimmten Gruppe angehören den Schreibschutz per VBA zu aktivieren. Und genau da bräuchte ich Hilfe. Konkret: Mit welchem VBA-Befehl aktiviere ich den Schreibschutz? Oder geht das etwa gar nicht...?!
Gruß und Danke!
Volker Theisinger
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schreibschutz per VBA setzen
09.01.2007 10:48:34
Jürgen
Hallo Volker
probiers mal damit
Cells.Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Gruß
Jürgen
AW: Schreibschutz per VBA setzen
09.01.2007 11:12:10
Volker
Hallo Jürgen,
danke für die superschnelle antwort. Kannst Du mir, bevor ich den Code ausprobiere, noch kurz erläutern, was der effekt in detail sein soll?
Gruß
Volker
Anzeige
AW: Schreibschutz per VBA setzen
09.01.2007 11:24:14
Daniel
Hallo
damit erreichst du, daß der Benutzer in der Datei nichts ändern kann.
aber vielleicht soll der Nutzer ja bestimmte Sachen ändern können, aber es soll verhindert werden, daß er das abspeichert. (was ja der Schreibschutz ermöglicht)
Leider ist es nicht möglich, die Schreibschutzeigenschaft per VBA zu ändern.
Alternativ könntest du ja eine 2. Datei erstellen, die im Workbook-Open-Ereignis die erste Datei öffnet, je nach Nutzer mit Password oder mit ReadOnly = true.
Dann bleibt der Schreibschutz erhalten, muß aber vom erwählten Nutzerkreis nicht eingegeben werden.
gruß, Daniel
Anzeige
AW: Schreibschutz per VBA setzen
09.01.2007 11:37:54
Volker
Hallo,
danke! Also, wie du schon vermutest, ich will nict, dass gespeichert werden kann. Das ändern soll gestattet sein.
Und der clevere trick über die zweite Datei geht auch nicht, da dann DIE Datei trotzdem gespeichert werden könnte - wenn ich das recht verstanden habe. Und genau das will ich ja nicht.
Trotzdem danke an alle! Die Info, dass man über VBA den Schreibschutz nicht an-/ausschalten kann ist ja eigentlich schon der ko für meine anfrage...
Gruß
Volker
Anzeige
AW: Schreibschutz per VBA setzen
09.01.2007 11:50:23
Jürgen
Hallo Volker,
irgendwie begreife ich Dein Problem nicht richtig. Was macht es für einen Sinn Änderungen zu gestatten, das Speichern aber nicht?
Den Schreibschutz für ein Blatt kann man aber sehr wohl per VBA aufheben/setzen.
Gruß
Jürgen
AW: Schreibschutz per VBA setzen
09.01.2007 12:22:50
Daniel
Hallo
den Schreibschutz für ein Blatt kann man schon setzten, meines Wissen nach aber nicht den Schreibschutz für die ganze Datei. Das geht meines Wissen nach nur beim Speichern und dann ist er aber auch erst beim nächsten Öffnen aktiv (wenn du andere Infos hast, würd ich das auch gerne wissen).
Zur Sinnfrage: Es ist schon recht lässtig mit einer Datei zu arbeiten, wenn der Blattschtutz akiviert ist, auch wenn man nur liest.
Weil u.U will man ja neu sortieren, Filtern, auch mal was ausblenden, löschen oder umgruppieren, berechnen oder anders Formatieren. Nur sollte der nächste Leser halt wieder eine "saubere" Datei haben.
Da kann diese Methode schon recht hilfreich sein.
Des weiteren ist es bei einem grossen Nutzerkreis schon sinnvoll, wenn alle "Leser" die Datei nur schreibgschützt öffnen, weil sie sonst für denjenigen, der tatsächlich Daten eingeben muss, u.U. zu lange blockiert ist.
Gruß, Daniel
Anzeige
AW: Schreibschutz per VBA setzen
09.01.2007 12:05:47
Daniel
Hallo
doch, geht schon.
in einem Fall öffnest du die Datei mit
Workbooks.Open Filename:= "C:\...\Mappe2.xls", WriteResPassword:="xxx"
im anderen mit
Workbooks.Open Filename:= "C:\...\Mappe2.xls", ReadOnly:=True
in keinem der Fälle wird der Nutzer nach einem Password gefragt und im 2. Fall ist die Datei schreibgeschützt.
Nach dem Öffen der Datei kannst du ja die erste Datei mit
me.close savechanges:=false
wieder schließen.
Wer die Datei nicht über deine Zusatzdatei öffnet, kann die Datei dann ebenfalls nur schreibgeschützt oder mit Password öffnen.
Anzeige
AW: Schreibschutz per VBA setzen
09.01.2007 12:33:35
Volker
Das hört sich sehr Interesant an, Daniel. Das werde ich mal testen.
Danke vorerst, wenn ich noch ein Problemhaben sollte, werde ich mich an Dich wenden. Du hast gute Ideen... :-)
AW: Schreibschutz per VBA setzen
09.01.2007 11:54:59
Volker
Hi,
oh, das macht schon sinn. Wenn eine Tabelle z.B. dazu dient Musterberechnungen anzustellen. Da will jeder Anwender das ursprünglichee Dokument haben (und zwar garantiert unverfälscht und nicht - auch nur aus Versehen - überspeichert). Er will aber darin Änderungen machen, da er durch Eingabe verschiedener Beispiele bestimmte Szenarieen simuliert (und ggf. auch UNTER ANDEREM NAMEN abspeichert).
Gruß
Volker
Anzeige
AW: Schreibschutz per VBA setzen
09.01.2007 12:07:04
Jürgen
Hallo Volker
warum machst Du es dann nicht so: anstatt workbook_open probier mal
Workbook_BeforeClose - Display Alerts abschalten - deine Datei schließen und savechanges auf false setzen.
Dann kann jeder lustig munter ändern aber beim Schließen wird nicht nach dem Speichern gefragt und keine Änderungen abgespeichert.
Gruß
Jürgen
Anzeige
AW: Schreibschutz per VBA setzen
09.01.2007 12:36:06
Volker
Auch eine interessante Idee. Allerdings könnte dann auch kein Berechtigter mehr speichern...
AW: Schreibschutz per VBA setzen
09.01.2007 12:47:16
Jürgen
Hallo Volker,
ok, dann überprüfe beim Öffnen ob die Person berechtigt ist und setze eine Variable dann entsprechend auf True oder False. Beim Workbook_BeforeClose Ereignis fragst Du dann ab, ob diese Variable gesetzt ist oder nicht und schließt dann die Datei entsprechend mit oder ohne zu speichern.
Gruß
Jürgen
Anzeige
AW: Schreibschutz per VBA setzen
09.01.2007 13:08:42
Volker
Hört sich auch gut an, Jürgen! Ich bin kein VBA-Crack. Könnte der anwender da nicht zwischendrin speichern, ohne dass das Ereignis zieht? Aber es gibt bestimmt auch ein Ereignis, welches sich auf speichern bezieht. Wie lautet dann die Befehlszeile, damit ich mit bzw. ohne zu speichern schließe.
Gruß und Danke für Dein Engagement!
Volker
Anzeige
AW: Schreibschutz per VBA setzen
09.01.2007 13:43:02
Jürgen
Hallo Volker,
zwischendrin ist das Speichern möglich, da hast Du recht. Das einzige was mir dazu noch einfällt ist den Speichern Button und den Menüpunkt Datei - Speichern zu deaktivieren (Du findest genügend Beispiele wie das geht wenn Du nach Speichern deaktivieren suchst).
Ein User mit Schreibrechten wird dann trotzdem vor dem Schließen gefragt ob er die Änderungen Speichern will oder nicht.
Gruß
Jürgen
Anzeige
AW: Schreibschutz per VBA setzen
09.01.2007 13:47:14
Volker
Hallo,
vielen dank für Deine Hilfe. Das wäre sicher auch ein Weg. Allerdings funktioniert die Variante von Daniel mit der vorgeschalteten Datei prima! Wennmmir jetzt noch einer sagt, wie ich die Frage, ob Makros ausgeführt werden sollen umgehe und meine Makros trotzdem ausgeführt werden, dann wäre ich glücklich. Allerdings wäre dann die Sicherheitseinstellungen in Office wertlos, ich bezweifele also, dass sich die Frage bei der bei uns eingestellten Makrosicherheit vermeiden lässt.
Gruß und Dank e an alle, die mir geholfen haben!
Volker
Anzeige
AW: Schreibschutz per VBA setzen
09.01.2007 13:51:15
Jürgen
Hallo Volker,
ich hatte mal ein ähnliches Problem das ich folgendermaßen gelöst habe: beim Schließen der Datei habe ich alle Arbeitsblätter mit xlveryhidden ausgeblendet (nur eines war noch sichtbar auf dem Dick und Fett zu lesen Stand, dass man die Makros doch gefälligst aktivieren muss).
Wenn man nun die Datei öffnet und die Makros nicht aktiviert bekommt genau diesen schönen Hinweis.
Bei aktiviertem Makro habe ich das Hinweisblatt ausgeblendet und die eigentlichen Daten wieder eingeblendet.
Gruß
Jürgen
Anzeige
AW: Schreibschutz per VBA setzen
09.01.2007 14:20:31
Daniel
Hallo
ich denke nicht daß sich diese Sicherheitsabfrage vermeiden lässt.
Dein Schreibschutz ist aber davon ja nicht betroffen.
und wenn der User die Makros bei der Ladedatei abschaltet, wird die original-Datei ja gar nicht erst geladen.
Gruß, Daniel
AW: Schreibschutz per VBA setzen
09.01.2007 15:29:08
Volker
Danke für alle Antworten zum Thema Makro. Mir ging es aber darum, dass die Abfrage nicht kommt. Mein Problem ist, dass der Anwender mehrfach "drücken" muss, bevor die eigentliche Datei aufgeht (erst Schreibschutz, dann Makro). Da mir das Ausschalten der Makroabfrage als niht realisierbar erschien, hab ich im Forum nach dem Thema Schreibschutz gefragt. Und als das gelöst war, war ich unverschämt zu erwänen, dass mich jetzt nur noch die Makro Abfrage stört. Aber wenn man die weg machen könnte, wäre das ja auch nicht im Sinne des Erfinders. Deshalb war das mehr eine rethorische Frage...
Gruß und Danke an alle Helfer!!!
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Schreibschutz in Excel per VBA einrichten


Schritt-für-Schritt-Anleitung

Um einen Schreibschutz in Excel per VBA zu setzen, kannst du folgende Schritte befolgen:

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle im Projektfenster die Arbeitsmappe aus, in der du den Schreibschutz aktivieren möchtest.

  3. Doppelklicke auf „Diese Arbeitsmappe“.

  4. Füge den folgenden Code in das Codefenster ein:

    Private Sub Workbook_Open()
       If Not IsUserAuthorized() Then
           ThisWorkbook.Protect Password:="dein_passwort"
       End If
    End Sub
    
    Function IsUserAuthorized() As Boolean
       ' Hier kannst du die Logik zur Überprüfung des Benutzers einfügen
       IsUserAuthorized = False ' Beispiel: Benutzer ist nicht autorisiert
    End Function
  5. Schließe den VBA-Editor und speichere die Datei als „Excel-Arbeitsmappe mit Makros“ (.xlsm).

  6. Schließe und öffne die Datei erneut, um den Schreibschutz zu testen.


Häufige Fehler und Lösungen

  • Fehler: Die Datei wird nicht schreibgeschützt.

    • Lösung: Stelle sicher, dass der Code im Workbook_Open Event korrekt eingefügt ist und die Funktion zur Benutzerüberprüfung funktioniert.
  • Fehler: Makros werden nicht ausgeführt.

    • Lösung: Überprüfe die Makrosicherheitseinstellungen in Excel. Du musst die Ausführung von Makros aktivieren.
  • Fehler: Der Schreibschutz kann nicht aufgehoben werden.

    • Lösung: Stelle sicher, dass du das richtige Passwort verwendest. Wenn du kein Passwort gesetzt hast, kannst du den Schutz auch ohne Passwort aufheben.

Alternative Methoden

Wenn du nicht den excel vba schreibschutz setzen möchtest, gibt es auch andere Möglichkeiten:

  1. Excel-Datei mit Schreibschutz versehen:

    • Öffne die Datei, gehe zu „Datei“ > „Speichern unter“ und wähle „Tools“.
    • Setze ein Häkchen bei „Schreibgeschützt“ und speichere die Datei.
  2. Zweite Datei nutzen:

    • Erstelle eine zweite Excel-Datei, die beim Öffnen die erste Datei im schreibgeschützten Modus öffnet.
    • Beispiel:
      Workbooks.Open Filename:="C:\...\DeineDatei.xlsx", ReadOnly:=True

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du den Schreibschutz in Excel einrichten kannst:

  • Beispiel 1: Schreibschutz für bestimmte Benutzer aktivieren

    Private Sub Workbook_Open()
       If Not UserName = "DeinName" Then
           ThisWorkbook.Protect Password:="1234"
       End If
    End Sub
  • Beispiel 2: Speichern deaktivieren, aber Änderungen erlauben

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
       Application.DisplayAlerts = False
       ThisWorkbook.Close SaveChanges:=False
    End Sub

Tipps für Profis

  • Verwende Variablen: Speichere den Schreibschutzstatus in einer globalen Variable, um ihn später zu überprüfen.
  • Schutzlevel anpassen: Du kannst den Schutz auf bestimmte Bereiche oder Zellen anpassen, um mehr Flexibilität zu ermöglichen.
  • Benutzerdefinierte Fehlermeldungen: Gib dem Benutzer eine benutzerdefinierte Fehlermeldung, wenn er versucht, die Datei ohne Berechtigung zu ändern.

FAQ: Häufige Fragen

1. Wie kann ich den Schreibschutz wieder aufheben? Um den Schreibschutz aufzuheben, öffne die Datei und gehe zu „Überprüfen“ > „Blatt schützen aufheben“. Du musst das Passwort eingeben, falls eines gesetzt wurde.

2. Kann ich den Schreibschutz für bestimmte Zellen einrichten? Ja, du kannst bestimmte Zellen für die Bearbeitung freigeben, während andere geschützt bleiben. Dazu musst du zuerst die Zellen auswählen und in den Zelleigenschaften den Schutz aufheben, bevor du den Blattschutz aktivierst.

3. Wie aktiviere ich den Schreibschutz bei einer Excel-Datei? Bei einer Excel-Datei kannst du den Schreibschutz aktivieren, indem du die Datei über die „Speichern unter“-Option speicherst und die Option „Schreibgeschützt“ wählst.

4. Was passiert, wenn ich die Makrosicherheit aktiviere? Wenn die Makrosicherheit aktiviert ist, werden Makros, die nicht als vertrauenswürdig eingestuft sind, nicht ausgeführt. Du musst die entsprechenden Einstellungen in Excel anpassen, um deine Makros auszuführen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige