Schreibschutz / Speicherschutz
Pasi
Ich habe eine Exceldatei die von verschiedenen Leuten (schreibend oder lesend) geöffnet wird. Jetzt möchte ich in einem seperaten Sheet eine Liste führen wer sich wann eingelogt hat. Dazu habe ich im Workbook_Open folgenden Code eingefügt.
Private Sub Workbook_Open()
Application.AskToUpdateLinks = False
Application.ScreenUpdating = False
'Ermitteln User
Worksheets("Userübersicht").Visible = True
Dim UserName As String
Dim ReiheUser As String
Dim Netzwerk As Object
Dim AnzahlUser As String
If Not ActiveWorkbook.ReadOnly Then
Set Netzwerk = CreateObject("wscript.network")
UserName = Netzwerk.UserName
Sheets("Userübersicht").Select
Cells(1, 2).Select
AnzahlUser = Selection.Value
Cells(AnzahlUser + 1, 1).Select
Selection = UserName
Cells(AnzahlUser + 1, 2).Select
Selection.Value = Date
Cells(AnzahlUser + 1, 1).Select
AnzahlUser = AnzahlUser + 1
Cells(1, 2).Select
Selection = AnzahlUser
Sheets("Montageplanung").Select
End If
Das funktioniert auch ganz wunderbar, solange der angemeldete User sich schreibend anmeldet. Wählt er sich nur mit Lesezugriff ein bekomme ich Probleme. Ich dachte ich ergänze eine zweite If-Funktion wie folgt:
If ActiveWorkbook.ReadOnly Then
Set Netzwerk = CreateObject("wscript.network")
' MsgBox Netzwerk.Computername
UserName = Netzwerk.UserName
Sheets("Userübersicht").Select
Cells(1, 2).Select
AnzahlUser = Selection.Value
Cells(AnzahlUser + 1, 1).Select
Selection = UserName
Cells(AnzahlUser + 1, 2).Select
Selection.Value = Date
Cells(AnzahlUser + 1, 1).Select
AnzahlUser = AnzahlUser + 1
Cells(1, 2).Select
Selection = AnzahlUser
Sheets("Montageplanung").Select
ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, notify:=True
ActiveWorkbook.Save
ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, notify:=False
End If
If ActiveWorkbook.ReadOnly Then
Application.CommandBars("Standard").Controls("&Speichern").Enabled = False
Application.CommandBars("Worksheet Menu Bar").Controls("&Datei").Controls("&Speichern").Enabled = False
Application.CommandBars("Worksheet Menu Bar").Controls("&Datei").Controls("&Speichern unter...").Enabled = False
End If
Ich dachte über die Funktion am Schluss könnte ich den Schreibschutz aufheben (klappt auch) speichern und dann wieder setzen. Genau das klappt aber nicht. Eigentlich habe ich auch über Application.CommandBars, etc. jedes speichern von Kopien unterbunden. Das alles funktioniert aber nicht mehr wenn ich die letzten drei Zeilen aktiviere.
Würde mich freuen wenn jemand einen Tipp hat
MfG Pasqual