Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1372to1376
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

VBA Makro alle Blätter schützen mit optionen

VBA Makro alle Blätter schützen mit optionen
03.08.2014 12:33:07
Daniel
Hallo zusammen,
Ich habe ein Makro gefunden was schon fast alles macht was ich brauche, ich würde allerdings gerne zusätzlich noch definieren können was an Funktionen weiterhin erlaubt ist. Hier ist insbesondere der autofilter wichtig.
Ich habe schon probiert das in den code einzufügen, bekomme aber jedes mal die Fehlermeldung: Laufzeitfehler '438' Objekt unterstützt diese Eigenschaft nicht
Hier der VBA code von DumDum gefunden auf Office-Lösung.de:

Option Explicit
Sub Schutz()
Dim i As Long
Dim p1 As String
Dim p2 As String
p1 = InputBox("Bitte Passwort eingeben!", "Passworteingabe")
p2 = InputBox("Bitte Passwort wiederholen!", "Passworteingabe")
If p1 = "" Or p2 = "" Then
MsgBox "Eingaben waren nicht korrekt!" & vbLf & vbLf & "Kein Blattschutz!"
Exit Sub
End If
If p1  p2 Then
MsgBox "Eingaben waren nicht korrekt!" & vbLf & vbLf & "Kein Blattschutz!"
Exit Sub
End If
For i = 1 To Sheets.Count
Sheets(i).Protect p1
Next i
MsgBox "alle Blätter wurden geschützt"
End Sub
Sub Aufheben()
Dim i As Long
Dim p1 As String
Dim p2 As String
p1 = InputBox("Bitte Passwort eingeben!", "Passworteingabe")
If p1 = "" Then
MsgBox "Kein Passwort eingegeben!" & vbLf & vbLf & "Blattschutz wird nicht nicht  _
aufgehoben!"
Exit Sub
End If
On Error GoTo fehler
For i = 1 To Sheets.Count
Sheets(i).Unprotect p1
Next i
MsgBox "alle Blätter wurden entsperrt"
fehler:
If Err Then MsgBox "Falsches Passwort"
End Sub

Ich hoffe Ihr könnt mir weiterhelfen, am liebsten hätte ich eine Liste mit allen Optionen die ich dann im Code einzeln an und aus schalten kann. Währe super wenn Ihr auch noch definieren könntet welcher in der Liste was genau erlaubt.
Wenn Ihr auch noch erklären könntet warum der Fehler auftritt währe mein Tag perfekt ;-)
Schon mal im Voraus vielen Dank

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
du kannst das selber...
03.08.2014 12:39:54
Oberschlumpf
...mit dem Makrorecorder
Hi Daniel
1. Starte den Makrorecorder
2. Setz den Blattschutz für erst mal nur eine Tabelle mit allen Optionen, die du benötigst
Jetzt hast du schon mal den Code mit den Optionen, was erlaubt ist, was nicht erlaubt ist.
3. Nun kannst du noch ne For/Next-Schleife drum herum "basteln" (wie sie ja schon im Bsp-Code enthalten ist)
Sollte dir 3. nicht gelingen, zeig uns noch mal den durch 1. + 2. entstandenen Code.
Hilfts?
Ciao
Thorsten

AW: du kannst das selber...
03.08.2014 13:26:57
Daniel
Hallo Thorsten,
das mit dem Recorder war natürlich ne super idee :).
Leider klappt es immer noch nicht, habe den aufgezeichneten Code
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True

eingefügt:
Sub Schutz()
Dim i As Long
Dim p1 As String
Dim p2 As String
p1 = InputBox("Bitte Passwort eingeben!", "Passworteingabe")
p2 = InputBox("Bitte Passwort wiederholen!", "Passworteingabe")
If p1 = "" Or p2 = "" Then
MsgBox "Eingaben waren nicht korrekt!" & vbLf & vbLf & "Kein Blattschutz!"
Exit Sub
End If
If p1  p2 Then
MsgBox "Eingaben waren nicht korrekt!" & vbLf & vbLf & "Kein Blattschutz!"
Exit Sub
End If
For i = 1 To Sheets.Count
Sheets(i).Protect p1, DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
Next i
MsgBox "alle Blätter wurden geschützt"
End Sub

Aber nun bekomme ich den Fehler: '1004': Anwendungs- oder objektdefinierter Fehler

Anzeige
AW: du kannst das selber...
03.08.2014 13:54:19
Oberschlumpf
Hi Daniel
ich kann deinen Fehler mit dem gezeigten Code nicht reproduzieren.
Habe deinen Code kopiert und in ein allgemeines Modul einer neu erstellten Excel-Datei eingefügt - ohne irgdwelche Veränderungen im Code
Dann hab ich den Code gestartet.
Nach Eingabe eines Passwortes, Wiederholung desselben wurde der Code für alle Tabellenblätter erfolgreich durchgeführt.
Dann passt irgdwas anderes in deiner Datei nicht, in der du den Code verwendest.
Ciao
Thorsten

AW: du kannst das selber...
03.08.2014 14:14:19
Daniel
Habe den Code in der PERSONAL.XLSB, aber dass dürfte doch keinen Unterschied machen oder?

Anzeige
AW: du kannst das selber...
03.08.2014 14:22:08
Oberschlumpf
ich bin KEINE Maschine!
ich...erwarte...mit Hi oder Hallo oder ähnlich angesprochen zu werden - in jeder Nachricht
Hi Daniel
Ich kenn mich mit der PERSONAL.XLSB jetzt nicht so aus (ich nutze noch immer Excel 2003), vermute aber, dass alles, was in der PERSONAL.XLSB steht, als Standard für jede geöffnete Standard-Excel-Datei gilt.
Wen ich damit recht habe, würde nun in JEDER deiner Dateien für jedes Tabellenblatt der von dir definierte Blattschutz gesetzt werden - willst du das so?
Aber na ja, noch funzt es ja nicht. Und ich weiß leider nicht, woran es liegt.
Hmm...wenns stimmt, was ich oben vermute, wird es sich bei der Datei PERSONAL.XLSB um eine Vorlage und/oder AddIn handeln. Dateien dieser Art haben, so viel ich weiß, keine Tabellenblätter - du kannst nur VBA-Code erstellen, der NICHT auf die Methoden/Eigenschaften einer Tabelle zugreift.
Aber wie gesagt, ich weiß es nicht.
Ciao
Thorsten

Anzeige
AW: du kannst das selber...
03.08.2014 14:38:42
Daniel
Hallo Thorsten,
erst einmal sorry.
Also du hattest recht, ich habe das bei einer anderen Datei probiert und es geht einwandfrei auch mit dem code in der Personal.xlsb.
Wenn mich nicht alles Täuscht wird der code der Personal.xlsb nur im Aktiven Arbeitsblatt angewandt.
Das beste ist das mir gerade aufgefallen ist das das Makro auch in der Arbeitsmappe trotz der Fehlermeldung funktioniert. Und ohne die Definitionen was erlaubt ist lauft es ohne murren durch...
Gruss
Daniel

hab auch ne frage
03.08.2014 16:01:50
Spenski
hi ich nutze einfach mal den thread da es hier bisschen herpasst und ich nicht immer n neuen aufmachen will :)
Sub setzen()
Sheets(1).Protect
Sheets(2).Protect
Sheets(3).Protect
End Sub
Sub aufheben()
Sheets(1).Unprotect
Sheets(2).Unprotect
Sheets(3).Unprotect
End Sub
gibts auch n befehl um einfach alle tabellenblätter gleichzeitig zu schützen oder muss man jedes einzelne angeben?
gruss und sry für das wenig offtopic^^

Anzeige
AW: hab auch ne frage
03.08.2014 16:13:53
Oberschlumpf
Hi ?
Meines Wissens geht es nur so, wie du es zeigst, oder eben über eine Schleife mit Schleifenparameter.
Ciao
Thorsten

AW: hab auch ne frage
03.08.2014 16:22:57
Spenski
danke thorsten:)

21 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige