Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1300to1304
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Paßwort über mehrere Tabellen setzen und entfernen

Paßwort über mehrere Tabellen setzen und entfernen
12.03.2013 21:58:24
Rolf
Hallo Excel Fachleute,
ich habe eine Excel Datei mit ca. 14 Tabellen.
Darin gibt es geschützte Zellen und eben ungeschützte.
Bisher habe ich die Tabellenblätter einzeln mit einem Passwort versehen und wieder entsperrt wenn ich die gesperrten Zellen bearbeiten wollte.
Mit der Zeit wird dies aber sehr mühselig.
Nun habe ich mir überlegt, ob man ich nicht eine Schaltfläche einbauen könnte und mit dieser einen hinterlegten Befehl alle Tabellenblätter auf einen Schlag entsperren und nach getaner Arbeit wieder sperren kann.
Im Laufe der Zeit können noch ein paar Tabellenblätter dazukommen.
Meine Frage an Euch ist nun, wie ich das am besten machen könnte?
Per Makroaufzeichnung jede Tabelle einzeln, oder per VBA Programmierung?
Also Schaltfläche in Tabelle 1 „Tabellen entsperren“ klicken und dann das Passwort eingeben können und anschließend die Schaltfläche „Tabelle sperren“ anklicken Passwort eingeben und alle Tabellen sind wieder geschützt.
Habe auch im Archiv gesucht aber nichts passendes gefunden.
Dies sollte unter Excel XP und 2010 funktionieren.
Wenn nicht anders möglich auch nur in 2010
Danke im Voraus für eure Hilfe
Viele Grüße Rolf

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das fktioniert sicher in beiden Versionen ...
12.03.2013 22:24:58
Luc:-?
…ohne zusätzl Maßnahmen, Rolf.
Es gäbe 2 Möglichkeiten…
1. generell alle TabBlätter auf 1× (ent)schützen oder
2. dies blattweise b.Bedarf zu tun (2a) bzw nur die entsprd Zellen zu (ent)sperren (2b).
Für 1 und 2b wird ein For Each-Zyklus (1 f.Blätter, 2b f.Zellen) benötigt, für 2a nicht.
Gruß Luc :-?

AW: Das fktioniert sicher in beiden Versionen ...
12.03.2013 22:29:45
Rolf
Hallo Luc,
äh was wie? Sorry, verstehe nur Bahnhof.
Ich bin gerad ein Excel XP. Unter "Extras" - "Schutz" etc. finde ich nur "Blattschutz aufheben"
Wo finde ich deinenOption 1. generell alle TabBlätter auf 1× (ent)schützen?
Und was ist ein "For Each-Zyklus" ?
Gruß Rolf

Anzeige
AW: Paßwort über mehrere Tabellen setzen und entfernen
13.03.2013 00:28:23
Hubert
Hallo Rolf
füge unter VBA in in einem Modul folgendes ein:
Sub Aufheben()
For I = 1 To Sheets.Count
Sheets(I).Unprotect ("")
Next I
End Sub
Sub Schutz()
For I = 1 To Sheets.Count
Sheets(I).Protect ("")
Next I
End Sub
Lass das entsprechende Makro laufen und alle Blätter werden geschützt oder entschützt.
Gruß, Hubert

AW: Paßwort über mehrere Tabellen setzen und entfernen
13.03.2013 00:53:06
Rolf
Hallo Hubert,
OK, habe ich gemacht. Funktioniert auch.
Ist schon fast was ich brauche.
Gibt es auch eine Möglichkeit das Paßwort beim Setzen zu vergeben?
Denn so kann ja jetzt jeder die Sperre einfach aufheben. Ich dachte an setzen...dann muss eine Eingabeaufforderung für das zu setzende Paßwort aufgehen, und beim aufheben ebenso.
Ist das möglich?
Gruß Rolf

Anzeige
AW: Paßwort über mehrere Tabellen setzen und entfernen
13.03.2013 01:51:18
fcs
Hallo Rolf,
hier 2 Varianten
Gruß
Franz
'Variante 1 - Jeweils Eingabe per Input-Box
'Hier besteht die Gefahr, dass man sich schnell mal beim Setzen des _
Kennworts vertippt und sich anschliessend nicht mehr an das korrekte _
Kennwort erinnert.
Sub Aufheben()
Dim strPW As String, I As Integer
On Error GoTo Fehler
strPW = InputBox("Blattschutz - AUS" & vbLf _
& "Bitte Kennwort für Blattschutz eingeben", _
"Blattschutz - A U F H E B E N")
If strPW  "" Then
For I = 1 To Sheets.Count
Sheets(I).Unprotect strPW
Next I
End If
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub
Sub Schutz()
Dim strPW As String, I As Integer
On Error GoTo Fehler
strPW = InputBox("Blattschutz - EIN" & vbLf _
& "Bitte Kennwort für Blattschutz eingeben", _
"Blattschutz  - A K T I V I E R E N")
If strPW  "" Then
For I = 1 To Sheets.Count
Sheets(I).Protect strPW
Next I
End If
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub

'Variante 2 - Kennwort wird im VBA-Code gespeichert
'Bei dieser Variante muss das VBA-Projekt per Kennwort geschützt werden
Private Const strPW = "MyPassword"
Sub Aufheben()
Dim I As Integer, strEingabe As String
strEingabe = InputBox("Bitte Kennwort für Blattschutz eingeben", _
"Blattschutz - A U F H E B E N")
Select Case strEingabe
Case ""
Case strPW
For I = 1 To Sheets.Count
Sheets(I).Unprotect strPW
Next I
Case Else
MsgBox "Kennwort ist falsch"
End Select
End Sub
Sub Schutz()
Dim I As Integer
For I = 1 To Sheets.Count
Sheets(I).Protect strPW
Next I
End Sub

Anzeige
AW: Paßwort über mehrere Tabellen setzen und entfernen
13.03.2013 02:42:53
Rolf
Hallo Franz,
danke für deine Hilfe...werde ich Morgen Abend mal auprobieren.
Habe mittlerweile folgendes zusammengesponnen.
Sub Aufheben()
If Application.InputBox("Bitte geben Sie ein Passwort ein!", "Passwortabfrage") = "Hier das Paß _
wort" Then
For I = 1 To Sheets.Count
Sheets(I).Unprotect ("")
Next I
Else
MsgBox "Sie haben das falsche Paßwort eingegeben", vbCritical, "Fehler"
End If
End Sub

Sub Schutz()
If Application.InputBox("Bitte geben Sie ein Passwort ein!", "Passwortabfrage") = "Hier das Paß _
wort" Then
For I = 1 To Sheets.Count
Sheets(I).Protect ("")
Next I
Else
MsgBox "Sie haben nicht die Berechtigung, das Makro auszuführen", vbCritical, "Fehler"
End If
End Sub

Das funktioniert bis jetzt auch. Habe aber keine Ahnung ob das Makro so prinzipiell Stolpersteine beherbergt. Könntest du da mal bei Gelegenheit drüberschauen?
Jetzt muss ich aber ins Bett. Muss gleich wieder zur Arbeit.
Gute Nacht
Gruß Rolf

Anzeige
AW: Paßwort über mehrere Tabellen setzen und entfernen
13.03.2013 02:49:17
Rolf
Hallo Franz,
jetzt habe ic doch noch schnell die 2. Variante von dir ausprobiert.
Die funktioniert auch hervorragend!
Habe noch das Modul mit Paßwort geschützt.
Somit ist das Problem gelöst.
Vielen lieben Dank für die Hilfe!
Gute Nacht und Gruß Rolf

AW: Paßwort über mehrere Tabellen setzen und entfernen
13.03.2013 09:15:15
Hubert
Hallo Rolf
Franz hat dir ja schon klasse geholfen, aber
zur Vervollständigung meiner Version hier noch einmal
meine angepasste Version:
Sub Aufheben()
Dim StrEing As String
StrEing = InputBox("Passwort ?")
On Error GoTo Errorhandler
For I = 1 To Sheets.Count
Sheets(I).Unprotect StrEing
Next I
Exit Sub
Errorhandler:
MsgBox "Falsches Passwort !"
End Sub

Sub Schutz()
For I = 1 To Sheets.Count
Sheets(I).Protect ("test")
Next I
End Sub
Gruß und enen schönen Tag
Hubert

Anzeige
AW: Paßwort über mehrere Tabellen setzen und entfernen
13.03.2013 11:58:50
Rolf
Hallo Hubert,
vielen Dank auch an dich!
Das ist super! Ich glaube ich werde das benutzen.
Franz hat recht. Die Gefahr daß man sich bei der Eingabe des neuen Paßworts vertippt ist zu groß. So ist sichergestellt daß an schnell und einfach ein vordefiniertes PW setzt.
Ich danke Allen die mir so gut und schnell geholfen haben!
Ihr seid wie immer spitze!
Problem gelöst!
Gruß Rolf

AW: Paßwort über mehrere Tabellen setzen und entfernen
19.03.2013 21:23:54
Rolf
Hallo Klaus,
ich habe doch noch ein Problem mit deiner VBA. Vielleicht kannst du mir nochmal helfen?
Ich poste gleich mein Problem hier. Grob...ich habe ein VBA welches mir die bedingte Formatierung mit x Optionen ermöglicht. Durch das setzen des Blattschutzes, bekomme ich nun eine Fehlermeldung im Code. Wenn ich den Blattschutz weider entferne, funktioniert die Formatierung wieder ohne Probleme. Vielleicht kannst du mir dazu helfen?
Viele Grüße
Rolf

Anzeige
aus Prinzip: Passwortsicherheit unter Excel
13.03.2013 09:37:20
Klaus
Hallo Rolf,
nur zu deiner Information, ein Passwort schützt zwar vor circa 99% aller "dummen" User, aber verlass dich nicht auf die Excel-Sicherheit um sensible Daten zu schützen.
Denn so kann ja jetzt jeder die Sperre einfach aufheben.
Und wenn du ein Passwort vergibts dass ich nicht kenne, brauche ich circa 15 Sekunden um das auszuhebeln. Wer die Vorgehensweise dafür noch nicht kennt aber google bedienen kann, schafft es in unter 15 Minuten.
Das VBA-Projekt selbst zu schützen bringt schon etwas mehr, aber auch nicht viel. Auch dass ist mit einfachsten Mitteln zu knacken, auch hierfür bietet google die Lösungen leider frei haus. Ich hab das jetzt nicht getestet, aber ich meine ich kann das Blattschutz-Passwort sogar bei gesperrtem VBA-Modul knacken ohne dass es viel mehr Umstände macht.
Ich will dich jetzt sicher nicht davon abbringen deine Projekte zu schützen. Wie oben schon gesagt, da die meisten User gerade mal wissen wie man den Computer anschaltet reicht der Schutz eigentlich. Nur wisse, in Excel ist nichts sicher.
Grüße,
Klaus M.vdT.

Anzeige
AW: aus Prinzip: Passwortsicherheit unter Excel
13.03.2013 12:03:41
Rolf
Hallo Klaus,
ja ich weiß die Sicherheit...ich "hoffe" daß keiner in meiner Firma soviel kriminielle Energie verwendet um das PW knacken zu wollen. Es handelt sich eigentlich auch nicht um zu geheime Daten, sondern eher um den Versuch daß nicht jeder User gleich die Formeln in den Tabellen zerstören kann. Vielleicht etwas zu naiv ich weiß. Ist auch doof, wenn Microsoft schon diese Optionen zur Paßwortvergabe anbietet, sollte das auch sicher sein.
Hast du einen Tipp wie man das über das Standardmaß von Excel absichern könnte?
Gruß Rol

AW: aus Prinzip: Passwortsicherheit unter Excel
13.03.2013 13:10:14
Klaus
Hi Ralf,
Ist auch doof, wenn Microsoft schon diese Optionen zur Paßwortvergabe anbietet, sollte das auch sicher sein
Darauf antworte ich mit einem xkcd-Comic:
Actual actual reality: nobody cares about his secrets.  (Also, I would be hard-pressed to find that wrench for $5.)
Hast du einen Tipp wie man das über das Standardmaß von Excel absichern könnte?
Nein, nicht wirklich. Für Tabellenblätter schon mal gar nicht, da kommt man immer ran.
Bei VBA-Code könnte man etwas mehr machen. Nepumuk hatte mal ein Beispiel gepostet, in dem er das VBA-Projekt in eine *.DLL ausgelagert hat - die hätte man zunächst dekodieren müssen (theoretisch auch möglich, aber schon viel unwarscheinlicher).
Dann gibt es noch Codecrunch, hier mal ein Beispiel: http://www.crunchcode.de/de/
Weitere Lektüre: Google oder Wiki nach dem Begriff "Obfuscator"
Die Idee dahinter ist, den Code nicht zu schützen (weils eh nicht geht) sondern bei Funktionalität für Menschen unlesbar und unverständlich zu machen.
Grüße,
Klaus M.vdT.

Anzeige
AW: aus Prinzip: Passwortsicherheit unter Excel
13.03.2013 13:19:28
Rolf
Hallo Klaus,
Ok ich verstehe. Danke für deine guten Ausführungen.
Ich lese mir das mal durch
Gute Zeit!
Gruß Rolf

...und dann könnte man auch noch so ...
13.03.2013 18:45:36
Luc:-?
…gemeine Fallen einbauen, Rolf & Klaus,
die per vbFkt/Methode CallByName in Verbindung mit einer etwas anspruchsvolleren Kryptisierungsfkt möglich wdn. Bei aktiviertem Code, irgendwann wird der Raubkopierer das ja mal tun wollen, wenn die Datei sonst keine oder keine volle Fktionalität entfaltet, könnten so nicht nur fast alle Blätter der Datei gelöscht wdn, sondern auch das Blatt mit diesem Code. Wenn der gleich beim Dateiaufruf eingesetzt wird, findet VBA den nicht und Xl stürzt deshalb beim nächsten Dateiaufruf ab. Der wäre allerdings auf Grund der Blattlöschung ohnehin sinnlos.
Daten könnte man ebenfalls kryptisieren (dafür gibt's ProfiPgmm) oder durch Zufallszahlen bzw Matrixfktt zur Datenbereitstellung (natürlich in einer Form, die nur eine beliebige Anzahl von #WERT!-Fehlern zurückgibt, die aber bei Verbindung zur Datenquelle durch die echten Daten substituiert wdn können) ersetzen. Die Datenquelle müsste sicher verwahrt sein, die öffentliche Tabelle verweist darauf (per LeselupenFkt oder in der Matrixfml). Wird die ZielMappe von dieser Quelle getrennt, fktt das alles nicht mehr. Übrigens könnte man sogar (einfache) xlStandardFktt durch eigene ersetzen, die in der Quelle vorhanden, im Trennungsfall nur noch #NAME? zurückgeben, falls man nicht ohnehin nur die Ergebnisse verwenden will. Diese einfachen Eigen-UDF könnten quasi nur durchnummeriert sein, so dass sie nicht ihren Zweck verraten. Hierzu und zur eher üblichen Datenkrypti­sierung finden sich Bspp im Herber-Archiv (zu Ersterem von mir).
Sicher gibt's noch einige andere Möglichkeiten, aber das Anlegen eines COM-AddIn (dll-basiert) ist sicher die beste, denn sie ist auch juristisch relevant, wenn man, wie allgemein üblich, die Dekompilierung ausdrücklich verbietet. Bei normalen AddIns wäre das trotz evtl PW-Knackverbot fraglich.
Gruß Luc :-?

Anzeige
AW: aus Prinzip: Passwortsicherheit unter Excel
13.03.2013 13:15:24
Klaus
Hi Ralf,
Ist auch doof, wenn Microsoft schon diese Optionen zur Paßwortvergabe anbietet, sollte das auch sicher sein
Darauf antworte ich mit einem xkcd-Comic:
Actual actual reality: nobody cares about his secrets.  (Also, I would be hard-pressed to find that wrench for $5.)
Hast du einen Tipp wie man das über das Standardmaß von Excel absichern könnte?
Nein, nicht wirklich. Für Tabellenblätter schon mal gar nicht, da kommt man immer ran.
Bei VBA-Code könnte man etwas mehr machen. Nepumuk hatte mal ein Beispiel gepostet, in dem er das VBA-Projekt in eine *.DLL ausgelagert hat - die hätte man zunächst dekodieren müssen (theoretisch auch möglich, aber schon viel unwarscheinlicher).
Dann gibt es noch Codecrunch, hier mal ein Beispiel: http://www.crunchcode.de/de/
Weitere Lektüre: Google oder Wiki nach dem Begriff "Obfuscator"
Die Idee dahinter ist, den Code nicht zu schützen (weils eh nicht geht) sondern bei Funktionalität für Menschen unlesbar und unverständlich zu machen.
Grüße,
Klaus M.vdT.

28 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige