ulmer
Goto Top

Excel 2007, Arbeitsmappe per VBA entsperren, Inhalt hinzufügen, wieder sperren und speichern.

Hallo,

vielleicht kann mir ja einer der VBA-Experten weiterhelfen:

Ich habe eine Excel-Datei (gespeichert als .xls) mit 15 Arbeitsblättern. Die Arbeitsmappe und die Arbeitsblätter sind passwort geschützt (gleiches Passwort). In allen Arbeitsblätter soll in der Fußzeile links unten die Versionsnummer der Datei (des Formulars) eingetragen werden (z.B. V.1.1.). Die Versionsnummer wird manuell vergeben. Bislang mache ich das wegen fehlender VBA-Kenntnisse händisch. D.h.Arbeitsblatt entsperren, zur Fußzeile wechseln, die Nummer eintragen bzw. überschreiben, dann wieder sperren und dann weiter mit dem nächsten Arbeitsblatt. Gibt es eine Möglichkeit, dies über VBA zu automatisieren und könnte mir dabei jemand helfen?

Viele Grüße
Ulmer

Content-ID: 137571

Url: https://administrator.de/contentid/137571

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

bastla
bastla 06.03.2010 um 15:41:10 Uhr
Goto Top
Hallo Ulmer!

Sollte sich ziemlich direkt durch das Aufzeichnen eines Makros zunächst für eine Mappe und das nachfolgende Einbetten (erste zwei Zeilen unmittelbar nach "Sub Makro1()", letzte zwei Zeilen unmittelbar vor "End Sub") des entstandenen Makros in eine Schleife der Art
For Each Blatt In Worksheets()
    Blatt.Activate
    'hier Dein Makro-Code  
Next
Worksheets(1).Activate
durchführen lassen.

Grüße
bastla
76109
76109 06.03.2010 um 16:36:46 Uhr
Goto Top
Hallo Ulmer, Hallo bastla!

Wobei in der Each-Schleife auch noch die Anweisungen zum sperren und entsperren stehen:
For Each Blatt in Worksheets()
    Blatt.Unprotect Password:="Passwort"  
    .....
    .....
    Blatt.Protect Password:="Passwort"  
Next
Das Passwort könnte dabei im Code stehen, per InputBox unverschlüsselt (Reiner Text) oder per UserForm verschlüsselt (* * * *) abgefragt werden.

Gruß Dieter
bastla
bastla 06.03.2010 um 16:53:15 Uhr
Goto Top
@76109

Danke für die Ergänzung face-smile - das Entsperren des Blattes wird zwar beim Aufzeichnen des Makros auch erfasst als
ActiveSheet.Unprotect
(diese Zeile kann dann im aufgezeichneten Makro ebenso entfernt werden wie das Gegenstück "ActiveSheet.Protect + einige Paramete" am Ende ), die Übergabe des Passworts muss allerdings im Code ergänzt werden.
Das Passwort könnte dabei im Code stehen, per InputBox unverschlüsselt (Reiner Text) oder per UserForm verschlüsselt (* * * *) abgefragt werden.
Mit der Variante "InputBox" würde das dann so aussehen:
PW = InputBox("Bitte das Blattschutz-Passwort eingeben!", "Passwort eingeben")  
For Each Blatt in Worksheets()
    Blatt.Unprotect Password:=PW
    .....
    .....
    Blatt.Protect Password:=PW
Next
Annahme dabei: Alle Blätter werden mit dem selben Passwort geschützt - anderenfalls müsste die Reihenfolge der Zeilen 1 und 2 vertauscht werden.

Grüße
bastla
76109
76109 06.03.2010 um 17:57:14 Uhr
Goto Top
@bastla

Zitat von @bastla:
Danke für die Ergänzung face-smile - das Entsperren des Blattes wird zwar beim Aufzeichnen des Makros auch erfasst als.....
Gern geschehenface-smile
Annahme dabei: Alle Blätter werden mit dem selben Passwort geschützt - anderenfalls müsste die Reihenfolge der
Zeilen 1 und 2 vertauscht werden.
In dem Fall, was ich schon als sehr ungewöhnlich empfinde, müsste man dann aber das aktuelle Blatt im Text der InputBox mit angeben, sonst weiß man ja nicht, welches Blatt gerade bearbeitet wirdface-wink

Gruß Dieter
bastla
bastla 06.03.2010 um 18:11:39 Uhr
Goto Top
@76109
müsste man dann aber das aktuelle Blatt im Text der InputBox mit angeben, sonst weiß man ja nicht, welches Blatt gerade bearbeitet wirdface-wink
Ebenfalls sehr sinnvoll (durch "Blatt.Activate" wird zwar auf die jeweilige Tabelle gewechselt, allerdings erst einen Schritt später) ...

Die "InputBox" könnte dann so aufgerufen werden:
PW = InputBox("Bitte das Blattschutz-Passwort für " & Blatt.Name & " eingeben!", "Passwort für " & Blatt.Name) 
Grüße
bastla
Ulmer
Ulmer 08.03.2010 um 10:15:28 Uhr
Goto Top
Hallo bastla, hallo Dieter,

vielen Dank für die umfassende und schnelle Unterstützung. Ich werde eure Vorschläge gleich mal ausprobieren.

Viele Grüße
Ulmer