|
Erinnerung für deaktiven Blattschutz möglich?
|
| Autor |
Nachricht |
Ina.S
Im Profil kannst Du frei den Rang ändern
Verfasst am: 03. Feb 2010, 21:47 Rufname:
|
|
| Version: Office XP (2002) |
|
Puuuh, könntest Du mir nochmals mit Beschreibung aufzeigen, welche Makros jetzt benötigt werden? - momentan komme ich hier jedesmal durcheinander, da ich drei Makromodule und dazu noch etwas in 'DieseArbeitsmappe' habe.
Ich bin überzeugt davon, dass das funktioniert - bei Dir und genauso hier bei mir, nur habe ich ein Problem mit der Reihenfolge und der Vollständigkeit gleichermaßen.
Gruß.. Ina
|
|
gandalf149
Im Profil kannst Du frei den Rang ändern

Verfasst am: 03. Feb 2010, 22:37 Rufname:
Wohnort: Fiersbach
|
| |
| Version: Office XP (2002) |
|
Hallo Ina
Zum Üben machen wir das mal mit einer neuen Arbeitesmappe.
Öffne die letzte gepostete Datei (Blattschutz_nbpst)
Gehe in den Editor (Alt & F11)
Doppelklick auf VBAProjekt (Blattschutz_nbpst.xls)
Kennwortabfrage "test" eingeben. Projekt öffnet sich.
Modul1 markieren dann rechte Maustaste und exportieren
Das Explorerfenster geht auf merke dir den Ort (müßte der Ordner deiner Office-Version sein) den Namen ("modul1.bas " ) kannst du lassen, einfach mit OK bestätigen.
Das ganze jetzt mit Modul2.
Doppelklick auf "Diese Arbeitsmappe" . Markiere auf der rechten Seite den kompletten Code und Kopieren.
Öffne die neue Arbeitsmappe und gehe in den Editor.
Doppelklick auf diese Arbeitsmappe rechte Seite markieren und einfügen.
Der Code müßte jetzt komplett drinstehen.
Gehe nun oben in der Menueleiste auf Datei/Importieren
Die oben exportierten Module stehen nun zur Auswahl.
Wähle eine aus und OK das Modul steht jetzt drin.
Jetzt das gleiche für das zweite Modul.
Schließe den Editor, setze bei einem Tabellenblatt den Blattschutz Kennwort "test"
speichern, Datei schließen.
Bei erneutem Öffnen ist der blattschutz aktiv. Mit Alt & F8 kannst du nun die Kennwortabfrage aufrufen.
Ich hoffe das hilft dir jetzt weiter.
Gruß Gandalf149
|
|
Ina.S
Im Profil kannst Du frei den Rang ändern
Verfasst am: 04. Feb 2010, 11:41 Rufname:
|
|
| Version: Office XP (2002) |
|
Hallo Gandalf,
leider habe ich das Ziel noch immer nicht vor Augen.
Strikt an Deine Anweisungen gehalten bekomme ich sowohl in meiner Excel-Liste als auch in einer neuen, leeren Liste folgende Fehlermeldung beim Versuch zu speichern, die ich auch schon einmal weiter oben an Nepomuk und Dich beschrieb:
Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler
Beim Klick auf 'Debuggen' wird mir gelb hinterlegt folgendes angezeigt:
objSheet.Protect Password:=[PASS_WORD]
Daraufhin hatte ich nochmals das ganze Prozedere und dieses mit nur einem Tabellenblatt in der Liste zu speichern versucht; selbst beim Rechtsmausklick im Editor auf 'VBAProjekt (MappeX)\Schutz' und der Kennworteingaben "zum Schutz der Projekteigenschaften" erhielt ich nach Beendigung und Neustart der Datei zum Entsperren folgende Fehlermeldung:
Laufzeitfehler '13': Typen unverträglich
So wie Du es mir beschrieben hast, habe ich nun folgendes in meiner Liste stehen:
DieseArbeitsmappe:
Option Explicit
Private Sub Workbook_Activate()
Application.OnKey "%{F8}", "Schutz_aufheben"
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call Schutz_setzen
End Sub
Private Sub Workbook_Deactivate()
Application.OnKey "%{F8}"
End Sub
Modul1:
Option Explicit
Private Declare Function Beep Lib "kernel32" ( _
ByVal dwFreq As Long, _
ByVal dwDuration As Long) As Long
Option Private Module
Public Sub Schutz_aufheben()
Dim strPassword As String
Dim objSheet As Object
Beep 1000, 400
strPassword = InputBoxDK(Prompt:="Kennwort eingeben:", _
Title:="Kennwortschutz aufheben")
If strPassword <> "" Then
If strPassword = [PASS_WORD] Then
For Each objSheet In ThisWorkbook.Sheets
objSheet.Unprotect Password:=strPassword
Next
Else
MsgBox Prompt:="Das Kennwort ist falsch.", _
Title:="Kennwortschutz aufheben"
End If
End If
End Sub
Public Sub Schutz_setzen()
Dim objSheet As Object
Beep 1000, 400
For Each objSheet In ActiveWorkbook.Sheets
objSheet.Protect Password:=[PASS_WORD]
Next
End Sub
Private Sub Kennwort_aendern()
ThisWorkbook.Names.Add Name:="PASS_WORD", RefersTo:="test", Visible:=False
End Sub
Modul2:
Option Explicit
'Code geschrieben von Daniel Klann
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
(ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, _
ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Private Declare Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" _
(ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, _
ByVal lpClassName As String, _
ByVal nMaxCount As Long) As Long
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Private Const EM_SETPASSWORDCHAR = &HCC
Private Const WH_CBT = 5
Private Const HCBT_ACTIVATE = 5
Private Const HC_ACTION = 0
Private hHook As Long
Public Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim RetVal
Dim strClassName As String, lngBuffer As Long
If lngCode < HC_ACTION Then
NewProc = CallNextHookEx(hHook, lngCode, wParam, lParam)
Exit Function
End If
strClassName = String$(256, " ")
lngBuffer = 255
If lngCode = HCBT_ACTIVATE Then
RetVal = GetClassName(wParam, strClassName, lngBuffer)
If Left$(strClassName, RetVal) = "#32770" Then
SendDlgItemMessage wParam, &H1324, EM_SETPASSWORDCHAR, Asc("*"), &H0
End If
End If
CallNextHookEx hHook, lngCode, wParam, lParam
End Function
Public Function InputBoxDK(Prompt, Optional Title, Optional Default, Optional XPos, _
Optional YPos, Optional HelpFile, Optional Context) As String
Dim lngModHwnd As Long, lngThreadID As Long
lngThreadID = GetCurrentThreadId
lngModHwnd = GetModuleHandle(vbNullString)
hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)
InputBoxDK = InputBox(Prompt, Title, Default, XPos, YPos, HelpFile, Context)
UnhookWindowsHookEx hHook
End Function
Irgendwo sitzt ein klitzekleiner Fehler; kurioserweise funzt das bei Deiner Datei - bei meiner leider nicht, obwohl ich es genauso hineinkopiere und im Editor wie oben beschrieben ein Passwort dafür vergebe.
Hilfst Du mir weiterhin, bitte?
Ina
|
|
gandalf149
Im Profil kannst Du frei den Rang ändern

Verfasst am: 04. Feb 2010, 12:18 Rufname:
Wohnort: Fiersbach
|
|
| Version: Office XP (2002) |
|
Hallo Ina
hatte ich in der Anleitung vergessen, sorry
gehe ins Modul1 markiere
| Code: | | Private Sub Kennwort_aendern() |
ganz unten im Modul und drücke F5 (ausführen), Hier kannst du auch ein Kennwort das du gerne haben möchtest setzen, indem du "test" durch dein Kennwort ersetzt)
dann muß es funktionieren.
Gruß Gandalf149
|
|
Ina.S
Im Profil kannst Du frei den Rang ändern
Verfasst am: 04. Feb 2010, 13:14 Rufname:
|
| |
| Version: Office XP (2002) |
|
Suuupi, ja, das hat jetzt hingehauen... dankeschööööön.
Darf ich darüberhinaus noch einen kleinen Bug melden?
Wenn ich nicht den Weg über Alt-F8, sondern zum Öffnen eines Tabellenblatts den Weg über Extras\Schutz\Blattschutz aufheben nehme und anschließend dieses eine Tabellenblatt mit einem anderen Passwort versehe als die anderen Tabellenblätter (dummerweise kann das nämlich passieren), ist plötzlich jedes Passwort falsch und ich bekomme überhaupt nichts mehr geöffnet.
Ist es möglich, den einzelnen Blattschutz zu deaktivieren? Diese Option allerdings bitte nur "bearbeiten", wenn sie nicht zu viel Mühe bereitet - schließlich hast Du mir schon mehr als genug geholfen, obwohl ich in solchen Dingen gern perfektionistisch bin.
Und noch viel wichtiger eigentlich: Kannst Du mir auch verraten, wie ich das Passwort für alle Tabellenblätter umbenenne? Mein Versuch, das Wort "test" in der Zeile 'ThisWorkbook.Names.Add Name:="PASS_WORD", RefersTo:="test", Visible:=False' umzubenennen, schlug letztendlich fehl, da Excel anschließend kein Passwort mehr als richtig erkannte.
Noch eine Passwort-Frage entstand bei meinem Arbeiten:
Wie kann ich die Objekte und Module per Passwort schützen - denn darin befindet sich ja das Passwort für alle Tabellenblätter (test)?
Ina
|
|
gandalf149
Im Profil kannst Du frei den Rang ändern

Verfasst am: 04. Feb 2010, 14:04 Rufname:
Wohnort: Fiersbach
|
|
| Version: Office XP (2002) |
|
Hallo Ina
| Zitat: | | Ist es möglich, den einzelnen Blattschutz zu deaktivieren? Diese Option allerdings bitte nur "bearbeiten", wenn sie nicht zu viel Mühe bereitet - schließlich hast Du mir schon mehr als genug geholfen, obwohl ich in solchen Dingen gern perfektionistisch bin. |
Bis jetzt ist mir keine Möglichkeit bekannt, sobald es eine Lösung gibt, sage ich dir Bescheid.
| Zitat: | | Und noch viel wichtiger eigentlich: Kannst Du mir auch verraten, wie ich das Passwort für alle Tabellenblätter umbenenne? Mein Versuch, das Wort "test" in der Zeile 'ThisWorkbook.Names.Add Name:="PASS_WORD", RefersTo:="test", Visible:=False' umzubenennen, schlug letztendlich fehl, da Excel anschließend kein Passwort mehr als richtig erkannte. |
Du öffnest die Mappe und deaktivierst den Blattschutz (Alt & F8), gehe nun in das Modul1 ändere dort das Kennwort . Jetzt mußt du wie im letzten Posting von mir die Sub mit F5 starten.
Nach erneutem Öffnen ist das neue Kennwort aktiv.
| Zitat: | | Wie kann ich die Objekte und Module per Passwort schützen - denn darin befindet sich ja das Passwort für alle Tabellenblätter (test)? |
Hier die Hinweise die Nepumuk schon formuliert hatte.
| Zitat: | Die Prozedur "Kennwort_aendern" kannst du, nachdem du dein Kennwort (im Beispiel "test") eingegeben und sie mit F5 gestartet hast, wieder löschen. Oder für den späteren Gebrauch aufheben. Aber besser nicht in dieser Mappe.
Das VBA-Projekt kannst du so schützen: Im VBA-Editor - Menüleiste - Extras - Eigenschaften von VBAProject... - Reiter "Schutz" hier das Häkchen bei "Projekt für Anzeige sperren" setzen und unten ein zwei mal beliebiges Kennwort eingeben.
Aber gut merken, denn wir können das zwar knacken, aber wir verraten dir 1. nie wie das geht und 2. machen wir das nur mit unseren eigenen Mappen, niemals mit fremden.
Das Projekt ist geschützt, sobald du die Mappe speicherst, schließt und wieder öffnest. |
Gruß Gandalf149
|
|
Ina.S
Im Profil kannst Du frei den Rang ändern
Verfasst am: 04. Feb 2010, 15:56 Rufname:
|
|
| Version: Office XP (2002) |
|
Allen Beteiligten - insbesondere Gandalf und auch Nepomuk - möchte ich einen lieben Dank zukommen lassen für ihre Mühen und ihre Geduld mit meinem Excel-Problem, mit mir und meinen Fragen...
Gruß.. Ina
P.S. an Gandalf wegen 'Einzelne Blattschutzdeaktivierung' | Zitat: | | sobald es eine Lösung gibt, sage ich dir Bescheid |
Ich würde mich freuen
|
|
gandalf149
Im Profil kannst Du frei den Rang ändern

Verfasst am: 07. Feb 2010, 18:15 Rufname:
Wohnort: Fiersbach
|
|
| Version: Office XP (2002) |
|
Hallo Ina
entferne den Code in "Diese Arbeitsmappe"
| Code: | Option Explicit
Private Sub Workbook_Activate()
Application.OnKey "%{F8}", "Schutz_aufheben"
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call Schutz_setzen
End Sub
Private Sub Workbook_Deactivate()
Application.OnKey "%{F8}"
End Sub |
und füge folgenden dafür ein
| Code: | Option Explicit
Private Sub Workbook_Activate()
Application.OnKey "%{F8}", "Schutz_aufheben"
Application.CommandBars(1).Controls("Extras").Controls("Schutz").Enabled = False
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call Schutz_setzen
End Sub
Private Sub Workbook_Deactivate()
Application.OnKey "%{F8}"
Application.CommandBars(1).Controls("Extras").Controls("Schutz").Enabled = True
End Sub |
Jetzt wird beim Öffnen dieser Mappe der Blattschutz unter Extras abgeschaltet
Beim Öffnen einer anderen Mappe ist er aber wieder da.
Unten noch eine Beispielmappe
Gruß Gandalf149
| Beschreibung: |
|
 Download |
| Dateiname: |
Blattschutz_nbpwst.xls |
| Dateigröße: |
53 KB |
| Heruntergeladen: |
12 mal |
|
|
Ina.S
Im Profil kannst Du frei den Rang ändern
Verfasst am: 08. Feb 2010, 23:28 Rufname:
|
|
| Version: Office XP (2002) |
|
Hallo Gandalf,
das finde ich nett von Dir, dass Du Dich noch immer mit meinem Excel-Problem beschäftigst.
Deine gedownloadete Liste gleicht im Hintergrund nun meiner und ich bin vollauf zufrieden damit, dankeschööön.
Wir wollen mal nicht zu viel kriminelle Energie unseren Mitmenschen andichten und ich bin froh über das, was ich da momentan bereits habe bzw. was ich hier im Forum bislang erhielt; bitte nur als Anmerkung und bestimmt nicht als Kritik zu verstehen: 'Extras\Schutz' klappt nicht mehr, stimmt - jedoch kann man den Weg über 'Ansicht\Symbolleisten\Schutz' bzw. 'Extras\Anpassen\Symbolleisten' umgehen.
Nun aber ist's erst mal wieder Zeit für ein fettes Dankeschööön, für Deine Mühen, Deine Zeit und Deine Geduld...
Ina
|
|
gandalf149
Im Profil kannst Du frei den Rang ändern

Verfasst am: 09. Feb 2010, 02:24 Rufname:
Wohnort: Fiersbach
|
|
| Version: Office XP (2002) |
|
Hallo Ina
leider kann ich das so nicht nachvollziehen, meine älteste Version ist 2003.
Dort ist es so, das unter Ansicht/Symbolleisten/ Schutz nicht erscheint
unter Extras/Anpassen/Symbolleisten findest du zwar die Einträge Blatt schützen usw. aber sie sind ja nicht anwählbar.
Eigentlich bin ich davon ausgegangen, das du alleine den Blattschutz aufheben kannst und verhindert werden soll, die Routine Extras/Schutz/ Blatt schützen versehentlich aufzurufen. Die anderen Möglichkeiten, die du oben beschrieben hast entsprechen ja nicht der normalen Arbeitsweise und es müsste Klingeln diese Mappe wird anders geschützt.
Die anderen die das Blatt nur geschützt aufrufen können, müssen ja erstmal den Blattschutz entfernen, bevor sie ihn neu setzen können. Hier kommen sie aber wenn überhaupt nur bis zur Kennworteingabe und würden dann scheitern.
Generell ist zu sagen, (wie ja auch Nepumuk schon formuliert hatte), das mit Excelmitteln der Blattschutz nicht umgangen werden kann. Mit besonderen externen Programmen ist dies jedoch kein Problem.
Nur wenn diese Programme auf einem Rechner ausführbar sind, ist der Administrator gefordert, da er dies ja verhindern kann.
Sollte sich zu 2002 (ist ja auch schon fast uralt ) etwas ergeben werde ich mich melden.
Gruß Gandalf149
|
|
Ina.S
Im Profil kannst Du frei den Rang ändern
Verfasst am: 09. Feb 2010, 12:30 Rufname:
|
|
| Version: Office XP (2002) |
|
Das ist ja auch gar nicht alles so schlimm, Gandalf.
Es hätte ja sein können, dass ich einem Excel-Fuchs wie Dir noch etwas beibringen kann in dieser Materie <smile>... nein, im Ernst: Natürlich sind solche Sicherheitsargumente bereits weit überzogen und ich bin vollauf zufrieden mit dem Ergebnis.
Einen Einwand jedoch muss ich leider noch bringen:
| Zitat: | | Dort ist es so, das unter Ansicht/Symbolleisten/ Schutz nicht erscheint |
Bei mir erscheint es.
| Zitat: | | unter Extras/Anpassen/Symbolleisten findest du zwar die Einträge Blatt schützen usw. aber sie sind ja nicht anwählbar |
Dieser Punkt ist bei mir anwählbar.
Der Punkt 'Extras\Schutz' ist nicht anwählbar - das ist korrekt so.
Und was mir gerade noch einfällt: Muss ich vielleicht eine bestimmte Zeile in dem Makro markieren und wieder mit F5 aktivieren? - Und mal für alle Makros so wie die, die ich hier von Dir und Euch bekam: Woher weiß ich denn, wann ich ein Makro aktivieren muss und welche Zeile ist das dann, ich meine, woran erkenne ich das?
Ina
|
|
gandalf149
Im Profil kannst Du frei den Rang ändern

Verfasst am: 09. Feb 2010, 13:39 Rufname:
Wohnort: Fiersbach
|
|
| Version: Office XP (2002) |
|
Hallo Ina
zu 2002 kann ich noch nichts sagen, in den paar Stunden hat sich mein Kenntnisstand noch nicht verändert.
Zu den Makros, Routinen:
Makros können über das Makrofenster mit Ausführen gestartet werden, falls sie dort erscheinen.
Makros die im Makrofenster nicht erscheinen oder Routinen können im Editor mit F5 gestartet werden, indem diese vorher markiert wurde.(Name des Makros, zB. "Sub blablabla()".
Grundsätzlich ist zu sagen, man sollte wissen was man tut. (Am besten mit leerer,neuer Arbeitsmappe trainieren). Große Vorsicht ist geboten, wenn Makros etwas am Programm verändern, denn man braucht dann ein zweites Makro das die Änderung wieder rückgängig macht.
Gruß Gandalf149
|
|
Ina.S
Im Profil kannst Du frei den Rang ändern
Verfasst am: 12. Feb 2010, 20:57 Rufname:
|
|
| Version: Office XP (2002) |
|
Gut zu wissen, danke Dir dafür... und wenn doch etwas schief geht, kann ich sicherlich auf Deine Hilfe und Dein Wissen zählen...
Bis dahin... Ina
|
|
gandalf149
Im Profil kannst Du frei den Rang ändern

Verfasst am: 13. Feb 2010, 19:34 Rufname:
Wohnort: Fiersbach
|
| |
| Version: Office XP (2002) |
|
Hallo Ina
werde mich bemühen.
| Zitat: | | Das Einzigste, das sich vermehrt, wenn man es teilt, ist "Wissen" |
Gruß Gandalf149
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum nicht posten Du kannst Dateien in diesem Forum herunterladen
|
|
|
|
| Verwandte Themen |
| Forum / Themen |
Antworten |
Autor |
Aufrufe |
Letzter Beitrag |
 |
Excel VBA (Makros): Blattschutz für best. Zellen in Zeile x kurzfristig aufheben |
1 |
Donna34 |
115 |
04. Mai 2010, 13:33 falkh  |
 |
Excel Auswertungen: Vergleich von zwei Trendlinien möglich? |
9 |
martina9081 |
322 |
18. Feb 2010, 15:24 martina9081  |
 |
Excel VBA (Makros): Referenz auf ausführendes Objekt möglich? |
4 |
Stoosy |
104 |
26. Sep 2009, 00:58 l.key  |
 |
Excel VBA (Makros): Per Makro in Blattschutz schreiben |
6 |
ACEofSPADES |
411 |
13. Aug 2009, 17:12 poco  |
 |
Excel Auswertungen: Filter nach Zeilen (d.h. Spalten ausblenden) möglich? |
6 |
msbab |
4596 |
15. Jun 2009, 13:12 razze  |
 |
Excel Formeln: Excel Makro für ein einzelnes Sheet möglich??? |
3 |
Willi Wahnsinn |
108 |
20. Mai 2009, 13:45 Cruel  |
 |
Excel VBA (Makros): (xls|csv)-- xsd --> xml per Excel automatisch möglich? |
4 |
Trebinuk |
3118 |
13. März 2009, 20:41 TieKei  |
 |
Excel Hilfe: Datenüberprüfung - Zellendropdown und Eingabe möglich? |
2 |
Jan301179 |
215 |
20. Jan 2009, 09:13 Gast  |
 |
Excel VBA (Makros): Blattschutz |
4 |
Base |
113 |
14. Jan 2009, 13:42 Gast  |
 |
Excel VBA (Makros): Tabelle1 ansprechen und Blattschutz setzen |
1 |
MsgWaldfee |
206 |
24. Sep 2008, 10:32 Gast  |
 |
Excel VBA (Makros): Blattschutz zur Aktivierung von Buttons kurzzeitig aufheben |
1 |
chrisch79 |
306 |
13. Jun 2008, 18:36 Klaus-Dieter  |
 |
Excel Hilfe: Erinnerung von bestimmten Daten an einen bestimmten Tag |
3 |
clara florenz |
412 |
22. Mai 2008, 19:59 Gast  |
| |
|