Autor
|
Thema: Excel ComandButton mit Passwort (4275 mal gelesen)
|
Sabine21502 Mitglied
Beiträge: 6 Registriert: 04.11.2011
|
erstellt am: 04. Nov. 2011 11:55 <-- editieren / zitieren --> Unities abgeben:
Ein freundliches Hallo sende ich. Habe mir gerade einen Code hinter einen CommandButton gelegt, der in passwortgeschützten Arbeitsblättern die Pivotdaten aktualisieren soll. Funktioniert bis hier: Nach anklicken des Button wird das Passwort deaktiviert, die Pivotdaten werden aktualisiert, aber danach wird das Passwort nicht wieder aktiviert. Wer kann mir sagen was an meinem Code falsch ist? Wäre sehr dankbar für Hilfe!! Hier der eingegebene Code: Private Sub CommandButton1_Click() 'aktualisiert alle Pivot-Tabellen in der aktiven Datei Dim ws As Worksheet Dim pt As PivotTable For Each ws In ActiveWorkbook.Worksheets ws.Unprotect Password:="Mein Passwort" For Each pt In ws.PivotTables pt.RefreshTable Next pt Me.Protect Password:="Mein Passwort" Next ws End Sub Einen lieben Gruß sendet Sabine Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 04. Nov. 2011 12:11 <-- editieren / zitieren --> Unities abgeben: Nur für Sabine21502
|
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 04. Nov. 2011 13:04 <-- editieren / zitieren --> Unities abgeben: Nur für Sabine21502
Hi Sabine, wo befindet sich dein CommandButton? Verwende am besten
Code: ws.Protect Password:="Mein Passwort"
dann kann nichts schief gehen.------------------ Bis später, Karin [Diese Nachricht wurde von Beverly am 04. Nov. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sabine21502 Mitglied
Beiträge: 6 Registriert: 04.11.2011
|
erstellt am: 04. Nov. 2011 14:49 <-- editieren / zitieren --> Unities abgeben:
Hallo runkelruebe. Danke für den Willkommensgruß. Und danke für deine Reaktion auf meine Frage. Wer Me. ist? Keine Ahnung. Zwar arbeite ich schon seit Jahrzehnten sehr gut mit Excel, aber den Bereich der CommandButton hatte ich in dieser Form noch nicht kennengelernt, mit also helfen lassen... Habe also getan was da stand... Aber Karins Hinweis hat mir weitergeholfen, nun taucht eine andere Frage auf... Dir einen lieben Dank. sabine Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sabine21502 Mitglied
Beiträge: 6 Registriert: 04.11.2011
|
erstellt am: 04. Nov. 2011 15:06 <-- editieren / zitieren --> Unities abgeben:
Hi Karin, tatsächlich, es klappt. Vielen Dank. Da ich bisher nie mit CommandButton gearbeitet habe, weiß ich leider nicht was die einzelnen Schritte im Code auslösen (naja, außer denen, die in ganzen Wörtern sprechen). Was also Me ws pt. bedeutet, weiß ich bis jetzt nicht, werde mich aber damit nun mehr beschäftigen!!! Nachdem ich die Änderung eingetragen habe schaltete sich das Passwort tatsächlich wieder ein, allerdings ist nun die ganze Datei mit Passwort geschützt... Zum Hintergrund: Es gibt zwei Arbeitsblätter mit Eingabefeldern, die Eingaben ändern sich alle paar Tage. Die müssen also offen sein. Ans Ende der zwei Listen habe ich dann den Button gesetzt. Auf zwei anderen Blättern habe ich die jeweiligen Pivotauswertungen, diese beiden Blätter hatte ich mit Passwort geschützt. Und ganz zum Schluss gibt es noch die ausdruckbare Kurzübersicht der Ergebnisse... Mit der Änderung schaltet sich also der Passwortschutz wieder ein, aber ich kann nun auch keine Eingaben mehr vornehmen javascript:InsertSMI(' %20'); Okay. Ist ja jetzt Wochenende, also keine Eingaben... Nee, im Ernst. Ich werde versuchen mich in die Frage einzuarbeiten: Wie schütze ich in diesem Code nur die beiden Blätter, nicht aber die ganze Datei. Macht mich neugierig. Und wenn ich keine Antwort darauf finde, dann komme ich gerne noch einmal ins Forum und stelle hier die Frage. Einverstanden? Warst mir eine große Hilfe. Vielen Dank. Lieben Gruß Sabine Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 04. Nov. 2011 17:17 <-- editieren / zitieren --> Unities abgeben: Nur für Sabine21502
Hi Sabine, hier mal dein (korrigierter) Code mit einigen Kommentaren zum besseren Verständnis:
Code: Private Sub CommandButton1_Click() 'aktualisiert alle Pivot-Tabellen in der aktiven Datei Dim ws As Worksheet ' Variable für das Tabellenblatt als Worksheet.Objekt Dim pt As PivotTable ' Variable für die Pivot-Tabelle als PivotTable-Objekt ' Schleife über alle Tabellenblätter der Arbeitsmappe For Each ws In ActiveWorkbook.Worksheets ' Schutz des gerade durchlaufenen Tabellenbattes aufheben ws.Unprotect Password:="Mein Passwort" ' Schleife über alle Pivot-Tabellen im gerade durchlaufenen Tabellenblattes For Each pt In ws.PivotTables ' Pivot-Tabelle aktualisieren pt.RefreshTable Next pt ' Schutz des gerade durchlaufenen Tabellenbattes setzen ws.Protect Password:="Mein Passwort" Next ws End Sub
Jetzt sollte auch klar sein, weshalb alle Tabellenblätter (nicht die Arbeitsmappe!) nach Codedurchlauf geschützt sind. Du musst also noch eine If oder Select Case Anweisung einbauen, in welcher du den Namen des Tabellenblattes abfragst und wenn dieser mit dem zu schützenden übereinstimmt, dann den Schutz setzen (bzw. vorher auch aufheben).Mit "Me" wird immer das Objekt angesprochen, auf welchem sich das Steuerelement befindet (bei ActiveX-Steuerelementen) - dein Ursprungscode bezog es sich also auf das Tabellenblatt, in welchem sich der CommandButton befindet und nur dieses wurde folglich geschützt und nicht die anderen Tabellenblätter. ------------------ Bis später, Karin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 04. Nov. 2011 19:04 <-- editieren / zitieren --> Unities abgeben: Nur für Sabine21502
ja,ja, ich weiss bin mal wieder viel zu spät ;-) wozu Blattschutz aufheben ;-) unten stehender Code fingert nicht an irgendwelchen Blattschutz(~e(n))[~gibt es ein Plural von Blattschutz? ] rum. Code: Sub test() Dim ws As Worksheet Dim pt As PivotTable 'ActiveSheet.Protect UserInterfaceOnly:=True ' arbeitet auch in einem geschützten Arbeitsblatt For Each ws In ActiveWorkbook.Worksheets For Each pt In ws.PivotTables ws.Protect UserInterfaceOnly:=True 'ActiveSheet zu ws geändert, da ws variabel ist pt.RefreshTable Next pt Next ws End Sub
Funktioniert einwandfrei mit der Formularschaltfläche (Makro zuweisen). Mit dem CommandButton (die mag ich eh nicht so ;-)) kann er pt.RefreshTable nicht zuordnen Ein Zurücksetzen & manueller Durchlauf mit F8 geht aber... egal, ich mache jetzt Feierabend Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sabine21502 Mitglied
Beiträge: 6 Registriert: 04.11.2011
|
erstellt am: 04. Nov. 2011 22:29 <-- editieren / zitieren --> Unities abgeben:
Hi Karin, danke für die Erklärungen, jetzt liest es sich doch gleich viel einfacher Dann werde ich mich noch tiefer einarbeiten und überlegen, welche Variante ich wähle: Commandbutton auf die zu schützdende Seite oder zusätzliche arbeitsblattbezogene Anweisung... Werde mich jetzt eine längere Zeit zurück ziehen und mir diese Seite von Excel mal genauer ansehen. Ist immer wieder spannend eine neue Seite dieses Programms kennen zu lernen - wo ich doch immer dachte ich sei schon ganz gut damit zugange. Bin absolut neugierig. Ich melde mich dann wieder. Herzlichen Dank und einen lieben Gruß Sabine Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sabine21502 Mitglied
Beiträge: 6 Registriert: 04.11.2011
|
erstellt am: 04. Nov. 2011 22:37 <-- editieren / zitieren --> Unities abgeben:
viel zu spät? neee. So erfahre ich noch von einer weiteren Alternative... werde auch darüber nachdenken / daran arbeiten. Danke dir. Vielen Dank und lieben Gruß Sabine Plural von Blattschutz könnte Blätterschützer sein Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sabine21502 Mitglied
Beiträge: 6 Registriert: 04.11.2011
|
erstellt am: 07. Jan. 2012 23:21 <-- editieren / zitieren --> Unities abgeben:
Hallo an alle die es interessiert, ich habe eine Lösung gefunden. (Ist schon etwas länger her, kam aber nie dazu euch zu informieren... sorry.) In Excel gibt es über EXTRAS \ SCHUTZ die Möglichkeit einzelne Bereiche zu markieren, die bei einem Blattschutz ungeschützt bleiben. Wenn ich die Eingabebereiche so markiere, dann ist es vollkommen okay, dass über meinen Code alle Blätter komplett geschützt werden - meine "ungeschützten" lassen weiterhin Eingaben zu. Nachdem ich dies verinnerlicht hatte, hörte ich mit meiner Suche auf (wollte ursprünglich den Code so ändern, dass Bereiche freigeschaltet bleiben). Danke für eure Hilfe, ohne die hätte ich vorher schon aufgegeben. Lieben Gruß Sabine Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |