Excel-Tabelle schützen vor zweite Bearbeitung

Dieses Thema Excel-Tabelle schützen vor zweite Bearbeitung im Forum "Microsoft Office Suite" wurde erstellt von bbp1986, 12. Juli 2006.

Thema: Excel-Tabelle schützen vor zweite Bearbeitung Hallo alle zusammen!!! habe mal ne frage vielleicht kann mir ja jemand helfen!!! ich möchte meine Excel-Tabelle...

  1. Hallo alle zusammen!!! habe mal ne frage vielleicht kann mir ja jemand helfen!!!

    ich möchte meine Excel-Tabelle schützen vor zweite bearbeitung!!!

    das heißt die tabelle soll fortlaufend bearbeitet werden!

    die einträge die getätigt wurden dürfen aber nicht mehr veränderbar sein!!!


    wenn möglich immer nachdem man das dokument speichert!!!


    hat da jemand ne idee wie man das machen könnte???


    mit freundlichen grüßen

    mario
     
  2. Hallo bbp1986,

    kannst du es noch etwas genauer  beschreiben. Was soll erreicht werden werden ?

    Vielleicht so ?

    - dass ein User an einem Tag die Datei nur einmal ändern kann.
       -> beim Speichern feststellen, ob an diesem Datum schon eine
           Änderung durch diesen User stattfand.
          Wenn ja, Änderung abweisen
      -> beim Schliessen (mit vorheriger Änderung) Zeitstempel für
          diesen User vermerken

    Gruß Matjes :)
     
  3. Hallo mario,

    hab nach nochmaligem Lesen ist mir jetzt aufgegangen das es garnicht um User geht  ::)

    Also du möchtest alles was in ein Tabellenblatt geschrieben und  gespeichert wurde vor Veränderung schützen.

    Dann probier mal das folgende Makro aus.

    Das Makro hat folgende Vorgehensweise:
    - löscht den Blattschutz
    - entsperrt alle Zelle
    - speichert die Tabelle, damit ein eventuell zu groß geratener UsedRange wieder schrumpft
    - sperrt alle Zellen des UsedRange
    - setzt den Blattschutz

    Den Blattnamen in der Konstanten cBLTNAME mußt du noch anpassen.
    In der Konstanten pw kannst du bei Bedarf ein Paßwort eintragen.

    Das Makro muß in der Code-Seite->DieseArbeitsmappe' liegen !

    Gruß Matjes :)
    Code:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
      Const cBLTNAME = Tabellexyz-> zu schützendes Blatt
      Const pw =  ->hier ggf. PW für Blattschutz eintragen
      
      Dim ws As Worksheet
      
      On Error Resume Next
      Set ws = ThisWorkbook.Worksheets(cBLTNAME)
      Err.Clear: On Error GoTo 0
      If ws Is Nothing Then
        MsgBox Blatt  & cBLTNAME &  nicht vorhanden.
        GoTo AUFRAEUMEN
      End If
      
     ->Schreibschutz des Blattes entfernen
      ws.Activate
      On Error Resume Next
      ActiveSheet.Unprotect Password:=pw
      If Err.Number <> 0 Then
        MsgBox Blatt-Schutz konnte nicht entfernt werden.
        GoTo AUFRAEUMEN
      End If
      On Error GoTo 0
      
     ->alle Zellen entsperren
      ws.Cells.Locked = False
      
     ->Speichern (dabei events abschalten)
     ->UsedRange sperren
      Application.EnableEvents = False
      ThisWorkbook.Save
     ->bei leerem Blatt nichts sperren
      If ws.UsedRange.Count > 1 Then ws.UsedRange.Locked = True
      ThisWorkbook.Save
      Application.EnableEvents = True
      
     ->Blattschutz setzen
      ActiveSheet.Protect Password:=pw
      
     ->Speicherung abbrechen, da schon alles gespeichert ist,
     ->wenn nicht Speichern unter ...
      If Not SaveAsUI Then Cancel = True
    AUFRAEUMEN:
      Set ws = Nothing
    End Sub
     
  4. erstmal danke für deine aufwändige hilfe.... :1 :1 :1

    es klappt leider nicht.... ich habe den von erstellten quellcode im macroeditor eingefügt den namen geändert in Tabelle 2 und dann bin ich auf speichern gegangen ... nichts passiert ... die exeldatei hat sich aufgehengt...

    ich probier es nochmal...... :|

    aber trotzdem danke für deine bemühungen....

    mfg mario
     
  5. Wenn's nicht klappt, schick mir eine kleine Test-Datei. Dann schau ich mal, woran es liegt.

    Gruß Matjes :)
     
  6. Also das Makro oben sperrt die Zellen des gesamten benutzten Bereichs eines Blattes, also auch leere Zellen.

    Die nachfolgende Variante schützt nur alle ausgefüllen Zellen eines Blattes.
    Jeweils anzupassende Konstanten sind gekennzeichnet.

    Das Makro muß in der Code-Seite->DieseArbeitsmappe liegen.

    Gruß Matjes :)
    Code:
    Option Explicit
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
      
     -><<<<<<<<<< A N P A S S E N >>>>>>>>>>>>>>>>>>>>>>
      Const cBLTNAME = Tabelle1-> zu schützendes Blatt
      Const pw =  ->hier ggf. PW für Blattschutz eintragen
      
     ->zu Schützender Bereich ab Zeile.../Spalte...
      Const cZ_ERSTEWERTEZEILE = 3
      Const cSP_ERSTEWERTESPALTE = 2
     -><<<<<<<<<< A N P A S S E N   E N D E >>>>>>>>>>>>
      
      Dim ws As Worksheet
      Dim r As Range, Zelle As Range, ersteAdresse As String
      Dim lRows As Long, lCols As Long
      
      On Error Resume Next
      Set ws = ThisWorkbook.Worksheets(cBLTNAME)
      Err.Clear: On Error GoTo 0
      If ws Is Nothing Then
        MsgBox Blatt  & cBLTNAME &  nicht vorhanden.
        GoTo AUFRAEUMEN
      End If
      
     ->Schreibschutz des Blattes entfernen
      ws.Activate
      On Error Resume Next
      ActiveSheet.Unprotect Password:=pw
      If Err.Number <> 0 Then
        MsgBox Blatt-Schutz konnte nicht entfernt werden.
        GoTo AUFRAEUMEN
      End If
      On Error GoTo 0
      
     ->Bereich der zu schützenden Zellen setzen
      lRows = ws.UsedRange.Rows.Count + ws.UsedRange.Row - 1
      lCols = ws.UsedRange.Columns.Count + ws.UsedRange.Column - 1
      Set r = ws.Range( _
                  ws.Cells(cZ_ERSTEWERTEZEILE, cSP_ERSTEWERTESPALTE), _
                  ws.Cells(lRows, lCols))
      
     ->Zellen entsperren
      r.Locked = False
      
     ->alle nicht leeren Zellen (Werte, nicht Formeln) suchen und sperren
      With r
        Set Zelle = .Cells(1)
        Set Zelle = .Find(What:=*, _
                          After:=Zelle, _
                          LookIn:=xlValues, _
                          LookAt:=xlWhole, _
                          SearchOrder:=xlByRows, _
                          SearchDirection:=xlNext, _
                          MatchCase:=False)
        If Not Zelle Is Nothing Then
          ersteAdresse = Zelle.Address
            Do
              Zelle.Locked = True
              Set Zelle = .FindNext(Zelle)
              If Zelle Is Nothing Then Exit Do
              If Zelle.Address = ersteAdresse Then Exit Do
            Loop
        End If
      End With
      
     ->Blattschutz setzen
      ActiveSheet.Protect Password:=pw
      
    AUFRAEUMEN:
      Set ws = Nothing: Set r = Nothing: Set Zelle = Nothing
    End Sub
     
  7. Und jetzt noch eine Passwort-geschützte Entsperrfunktion.

    Makro muß in der Code-Seite des Tabellenblattes liegen.
    Anzupassende Konstanten sind gekennzeichnet.

    Funktion:
    Ein Doppelklick auf eine gesperrt Zelle ruft eine PW-Abfrage auf.
    PW momentan xyz
    wird die richtig beantwortet, werden alle Zellen dieser Zeile entsperrt.

    Gruß Matjes :)
    Code:
    Option Explicit
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
      
     -><<<<<<<<<<<<< A N P A S S E N >>>>>>>>>>
      Const cENTSPERRPASSWORT = xyz
      Const pw =  ->hier ggf. PW für Blattschutz eintragen
     -><<<<<<<<<<<<< A N P A S S E N   E N D E >>>>>>>>>>
      
      Dim sPW As String
      
      If Target.Count = 1 Then
        If Target.Locked Then
          sPW = InputBox( _
                Bitte geben Sie das Paßwort zum entsperren der Zeile ein., _
                Zeile entsperren, )
          If sPW <> cENTSPERRPASSWORT Then
            If sPW <>  Then MsgBox Passwort falsch :-)
            Cancel = True
          Else
           ->Schreibschutz des Blattes entfernen
            On Error Resume Next
            Target.Parent.Unprotect Password:=pw
            If Err.Number <> 0 Then
              MsgBox Blatt-Schutz konnte nicht entfernt werden.
              Cancel = True
              Exit Sub
            End If
            On Error GoTo 0
            Target.EntireRow.Locked = False
            
           ->Blattschutz setzen
            Target.Parent.Protect Password:=pw
          End If
        End If
      End If
    End Sub
     
  8. DANKE DANKE DANKE Matjes bist echt nen voll profi!!!! :) :) :) mml mml mml

    Es ist gut das es noch so hilfsbereite menschen gibt!!! :1 :1 :1 :1

    mit freundlichen grüßen

    mario
     
Die Seite wird geladen...

Excel-Tabelle schützen vor zweite Bearbeitung - Ähnliche Themen

Forum Datum
Excel-Tabelle für OpenOffice Calc anpassen Windows XP Forum 30. Apr. 2012
Festes Hintergrundbild in Excel-Tabelle einfügen! Geht das? Microsoft Office Suite 2. Nov. 2009
Schreib-Block mit Standard-Excel-Tabelle als Muster! Gibt es so etwas? Windows XP Forum 4. Juni 2009
Inhalte einer Excel-Tabelle 1:1 in ein anderes Tabellenblatt reinkopieren! Windows XP Forum 7. März 2009
Frage zu Excel-Tabellenblatt Microsoft Office Suite 3. Feb. 2009