Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1268to1272
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

Blattschutz über alle Excel-Dateien eines Ordners

Blattschutz über alle Excel-Dateien eines Ordners
Bernd
Hallo,
ich würde gerne einen Blattschutz über alle Exceldateien eines Verzeichnisses incl. aller Tabellenblätter setzen, dabei sollte das Passwort einheitlich sein und darf durchaus im Code hinterlegt sein. Umgekehrt sollte das Entschützen analog funktionieren.
Sehr angenehme wäre es, wenn die Dateien ohne "nervige" Rückfragen (wie z. B. "Wollen Sie Verknüpfungen aktualisieren oder ähnliches?") geöffnet und am Schluss auch wieder ohne Rückfrage gespeichert werden.
Super wäre auch wenn es sowohl mit Excel 2010 und Excel 2003 funktionieren würde.
Gruß,
Bernd

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Blattschutz über alle Mappen
12.07.2012 19:15:51
Erich
Hi Bernd,
probier mal:

Option Explicit
Sub AlleMappenInVerz()
Dim strFile As String
Const strVerz As String = "C:\Test\"         ' anpassen
On Error GoTo XEnd
strFile = Dir(strVerz & "*.xls*")
With Application
.AskToUpdateLinks = False
.EnableEvents = False
.DisplayAlerts = False
While strFile  ""
If UCase$(strFile)  UCase$(ThisWorkbook) Then
Workbooks.Open strVerz & strFile, False, False, , , , True
'           BlattschutzAufheben
'     oder
BlattschutzSetzen
ActiveWorkbook.Close True
End If
strFile = Dir
Wend
XEnd:
On Error GoTo 0
.AskToUpdateLinks = True
.EnableEvents = True
.DisplayAlerts = True
End With
End Sub
Sub BlattschutzAufheben()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
wks.Unprotect "geh_heim"
Next wks
End Sub
Sub BlattschutzSetzen()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
wks.Protect "geh_heim"
Next wks
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: Blattschutz über alle Mappen
13.07.2012 10:41:45
Bernd
Hallo Erich,
Wenn ich die Bedingung "If Ucase$ (ThisWorkbook) Then ...
rausnehme, klappt es!
Könnte man das ganze noch insofern erweitern, in dem man mögliche Unterverzeichnisse miteinbezieht?
Auf jeden Fall schon mal vorab Dank für die gute Lösung!
Gruß, Bernd
AW: Blattschutz über alle Excel-Dateien eines Ordners
12.07.2012 19:20:35
Josef

Hallo Bernd,
probiere mal.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub schutzAn()
  protectAllSheets "E:\Forum", "DeinPasswort", True
End Sub


Sub schutzAus()
  protectAllSheets "E:\Forum", "DeinPasswort", False
End Sub


Sub protectAllSheets(Directory As String, Password As String, Protection As Boolean)
  Dim objWB As Workbook, objSH As Worksheet
  Dim strFile As String, strDir As String
  Dim lngCalc As Long
  
  On Error GoTo ErrExit
  
  With Application
    .ScreenUpdating = False
    .EnableEvents = False
    lngCalc = .Calculation
    .Calculation = xlCalculationManual
    .DisplayAlerts = False
  End With
  
  strDir = IIf(Right(Directory, 1) = "\", Directory, Directory & "\")
  
  strFile = Dir(strDir & "*.xls*", vbNormal)
  
  Do While strFile <> ""
    If strDir & strFile <> ThisWorkbook.FullName Then
      Set objWB = Workbooks.Open(strDir & strFile, UpdateLinks:=False)
      For Each objSH In objWB.Worksheets
        If Protection Then
          objSH.Protect Password
        Else
          objSH.Unprotect Password
        End If
      Next
      objWB.Close True
    End If
    strFile = Dir
  Loop
  
  ErrExit:
  
  With Err
    If .Number <> 0 Then
      MsgBox "Fehler in Prozedur:" & vbTab & "'protectAllSheets'" & vbLf & String(60, "_") & _
        vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
        "Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
        .Description & vbLf, vbExclamation + vbMsgBoxSetForeground, _
        "VBA - Fehler in Modul - Modul1"
      .Clear
    End If
  End With
  
  On Error GoTo 0
  
  With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = lngCalc
    .DisplayAlerts = True
  End With
  
  Set objWB = Nothing
  Set objSH = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: Blattschutz über alle Excel-Dateien eines Ordners
13.07.2012 10:46:11
Bernd
Hallo Sepp,
Makro läuft wie gewünscht! Wie bei der Antwort auf Erichs Code, auch bei Dir die Frage, ob man das noch auf Unterverzeichnisse erweitern könnte.
Vielen Dank auf jeden Fall schon mal, dass ich gleich zwei so perfekte Lösungen für diese Fragestellung erhalte, hat mich gefreut!
Gruß, Bernd
AW: Blattschutz über alle Excel-Dateien eines Ordners
13.07.2012 18:48:25
Josef

Hallo Bernd,
schreib das nächste mal bitte nicht "alle Exceldateien eines Ordners" wenn du dann auch die Unterordner durchsuchen willst.
Etwas aufwändiger deshalb als Beispieldatei.
https://www.herber.de/bbs/user/80972.xlsm

« Gruß Sepp »

Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige