Microsoft Excel

Herbers Excel/VBA-Archiv

Eingaben verhindern, wenn Tabelle schreibgeschützt

Betrifft: Eingaben verhindern, wenn Tabelle schreibgeschützt von: Carsten
Geschrieben am: 12.11.2014 16:10:03

Hallo zusammen,

wir haben eine Exceltabelle (Office 2010), die von einem Anwender im Netzwerk geöffnet ist.

Problem: Wenn nun ein anderer Anwender dieselbe Tabelle schreibgeschützt öffnet, kann er dort Eingaben machen, diese aber natürlich nicht speichern (zumindest nicht unter demselben Dateinamen).

Wir möchten nun von vorne herein verhindern, dass man in der schreibgeschützen Datei überhaupt irgendwelche Eingaben machen kann, damit der zweite Anwender gar nicht erst "in Versuchung kommt". Man soll die Daten in der Tabelle anschauen dürfen, aber Eingaben sollen direkt abgeblockt werden, solange die Tabelle von einem anderen Benutzer geöffnet ist.

Gibt es diesbezüglich eine Möglichkeit? Ich freue mich auf Eure Hilfe. Vielen Dank!

  

Betrifft: AW: Eingaben verhindern, wenn Tabelle schreibgeschützt von: fcs
Geschrieben am: 12.11.2014 16:36:17

Hallo Carstens,

wenn die Datei Makros enthält dann kannst du beim Öfnne den Status der Datei automatisch abfragen und Zellen und alle Blätter schützen.

Gruß
Franz

'Code unter diese Arbeitsmappe
Private Sub Workbook_Open()
  Dim wks As Worksheet
  If Me.ReadOnly = True Then
    For Each wks In Me.Worksheets
      wks.Unprotect
      wks.Cells.Locked = True
      wks.Protect AllowFiltering:=True
    Next
    Me.Saved = True
  End If
End Sub



  

Betrifft: AW: Eingaben verhindern, wenn Tabelle schreibgeschützt von: Carsten
Geschrieben am: 13.11.2014 16:21:03

Hallo Franz, funktioniert sehr gut, besten Dank!

Hatte nur leider nicht berücksichtigt, dass einige Anwender noch mit alten Office-Versionen arbeiten (2003) und da kennt er den Befehl "AllowFiltering:=True" nicht (Fehler beim Komplieren). Kann man den Code auch allgemeingültig auch für die alte Versionen anpassen?


  

Betrifft: AW: Eingaben verhindern, wenn Tabelle schreibgeschützt von: fcs
Geschrieben am: 13.11.2014 16:37:50

Hallo Carsten,

die Problemzeile ist nur relevant wenn auf den Tabellenblättern mit dem Autofilter gearbeitet werden soll.
Lass die Zeile weg oder baue ein Prüfung auf die Excelversion ein.

'Code unter diese Arbeitsmappe
Private Sub Workbook_Open()
  Dim wks As Worksheet
  If Me.ReadOnly = True Then
    For Each wks In Me.Worksheets
      wks.Unprotect
      With wks
        'Erforderlich für Excel 2003 falls Autofilterfunktion genutzt wird
        If .AutoFilterMode = True Then
          If .FilterMode = True Then .ShowAllData
        End If
      End With
      wks.Cells.Locked = True
      If Val(Left(Application.Version, 2)) >= 12 Then
        'nur bei Versionen 2007 und neuer
        wks.Protect AllowFiltering:=True
      End If
    Next
    Me.Saved = True
  End If
End Sub

Gruß
Franz


 

Beiträge aus den Excel-Beispielen zum Thema "Eingaben verhindern, wenn Tabelle schreibgeschützt"