472 Aufrufe
Gefragt in Tabellenkalkulation von fat61 Einsteiger_in (49 Punkte)
Hallo,

ich habe folgendes Problem und nun ist der Punkt erreicht an dem mir das gewaltig gegen den Strich geht.

In meinen Excel-Tabellen sind die Tabellenblätter geschützt und ebenfalls das VBA mit einem Passwort versehen. Jetzt habe ich den Verdacht das hier jemand sein unwesen treibt und Werte ändert, Zeilen löscht und sogar die Tabellen mit älteren Versionen überschreibt.

Da jeder nur Zugriff auf seinen eigenen Windows Account hat würde dieser jener der die Änderung vornimmt eine Spur hinterlassen. Leider habe ich keine Ahnung welche Möglichkeiten es gibt.

Ich hoffe sehr um eure Hilfe!

Dank euch!

7 Antworten

0 Punkte
Beantwortet von computerschrat Profi (32.2k Punkte)
Hallo fat61,

nur um es richtig zu verstehen, die betroffene Datei liegt auf einem PC, zu dem mehrere Benutzer jeweils über ein eigenes Benutzerkonto Zugang haben?

Liegt diese Datei im Verzeichnis C:\User\<Dein Benutzername>\... oder liegt sie an anderer Stelle? Nur wenn sie in deinem Benutzerbereich liegt oder in einem anderen Verzeichnis, auf das Benutzerrechte nur für dich eingerichtet wurden., hat sie benutzerbezogenen Zugriffsschutz.

Zur Prüfung, wann auf die Datei zugegriffen wurde kannst du den Windows Explorer öffnen mit Rechtsklick auf die Kopfzeilen der Spalten weitere Spalten zur Anzeige auswählen. Da solltest du auswählen Änderungsdatum und "Letzter Zugriff". Daran kannst du erkennen, wann die Datei gelesen oder bearbeitet wurde.

Wenn aber die Tabellenblätter geschützt sind und außerdem niemnad auf deinen Windows Account zugreifen kann, dann halte ich es für weniger wahrscheinlich, dass jemand die Datei bearbeitet. Vielleicht wurde ein Backup auf den Rechner zurückgespielt, so dass du wieder einen älteren Stand vorgefunden hast?

Bekommst du beim Aufrufen der Datei eine Fehlermeldung, dass unlesbarer Inhalt in der Datei gefunden wurde? In diesem Fall würde die Datei wiederhergestellt, beim Speichern aber an anderer Stelle im Dateisystem abgelegt und nicht auf dem ursprünglichen Speicherplatz, ohne dass das in einer Meldung deutlich gemacht wird. Damit greifst du immer wieder auf die alte Datei zu.

Gruß computerschrat
0 Punkte
Beantwortet von fat61 Einsteiger_in (49 Punkte)

Genauer gesagt liegt die Datei in einer Cloud/NAS auf die alle im Netzwerk zugriff haben. Jeder Benutzer im System hat einen eigenen Windows Account und es arbeiten mehrere personen in der Regel nacheinander an der Excel-Datei.

Wenn aber die Tabellenblätter geschützt sind und außerdem niemnad auf deinen Windows Account zugreifen kann, dann halte ich es für weniger wahrscheinlich, dass jemand die Datei bearbeitet. Vielleicht wurde ein Backup auf den Rechner zurückgespielt, so dass du wieder einen älteren Stand vorgefunden hast?

Das war zuerst mein Gedanke, nur ist diesmal aufgefallen, dass ich 5 neue Formulare mit der aktuellsten Version neu gemacht habe und diese auch gespeichert habe. Jetzt war das 4te Formular mit einer älteren Version überschrieben und in der Fatei waren ganze Zeilen gelöscht also war das Formular unbrauchbar. Jetzt war meine Idee das ich die Änderungsverfolgung aktiviere und im Tabellenblatt "Änderungsverlauf" dokumentiert wird wer was gemacht hat.

0 Punkte
Beantwortet von
Hallo fat61

Das Aktivieren der Änderungsverfolgung ist schon mal eine gute Idee. Da siehst du zumindest wer Zeilen löscht. Das schützt dich aber leider nicht vor dem Überschreiben der Datei durch eine ältere Version.

Bei uns im Netzwerk gibt es in den Dateieigenschaften (also im Explorer Rechtsklick auf die Datei) ein Register Sicherheit und darin einen Button Erweitert. Dort kann man erkennen welcher Windows-User die Datei erstellt, also dort als erstes abgelegt hat.

Ich weiß leider nicht ob auch du diese Option hast, das herausfinden zu können. Wenn ja würde ich mit dem Kollegen ein Hühnchen rupfen.

Ansonsten sollte auch schon eine Rundmail an alle Kollegen reichen. "Bitte Datei nicht überschreiben". Oder du lässt dir von der IT einen Netzwerkpfad anlegen wo nur du Schreibrechte besitzt und legst die Vorlagen dort rein.

Gruß Mr. K.
0 Punkte
Beantwortet von
Hallo

Dateiattribute!

Vielleicht hilfreich!

Ordner wählen der zu untersuchenden Dateien

Gruß Michael

Sub ShowFile()
    Dim Dpfad As String, DateiName As String
    Dim Lzeile As Long
    Dim FileO As Object, Files As Object
    Set FileO = CreateObject("Scripting.FileSystemObject")
    Dpfad = OrdnerAuswahl
    DateiName = Dir(Dpfad & "*.*")
    Do While DateiName <> ""
        Set Files = FileO.GetFile(Dpfad & DateiName)
        With Worksheets(1)
            Lzeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
            .Cells(Lzeile, 1) = Files.Name
            .Cells(Lzeile, 2) = Files.DateCreated
            .Cells(Lzeile, 3) = Files.DateCreated
            .Cells(Lzeile, 4) = Files.DateLastModified
            .Cells(Lzeile, 5) = Files.DateLastModified
            If .Cells(Lzeile, 4) <> .Cells(Lzeile, 2) Or .Cells(Lzeile, 5) <> .Cells(Lzeile, 3) Then
                .Range(.Cells(Lzeile, 1), .Cells(Lzeile, 6)).Font.ColorIndex = 5
                .Cells(Lzeile, 6) = "*"
            Else
                .Range(.Cells(Lzeile, 1), .Cells(Lzeile, 5)).Font.ColorIndex = 1
            End If
            DateiName = Dir
        End With
    Loop
End Sub
Function OrdnerAuswahl() As String
    On Error Resume Next
    Dim AppShell As Object
    Dim BrowseDir As Variant
    Set AppShell = CreateObject("Shell.Application")
    Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner auswählen", &H1000, 17)
    OrdnerAuswahl = BrowseDir.items().Item().Path & "\"
End Function
0 Punkte
Beantwortet von fat61 Einsteiger_in (49 Punkte)
Das Problem an der Sache ist das mehrere Personen dadrauf sehr wohl schreibzugriff benötigen, deshalb würde ich es allgemein eine gute Sachen finden wenn man sehen könnte war was gemacht hat.

Mit der Antwort über die Ordnerattribute kann ich noch nicht wirklich was Anfangen, ich gehe mal davon aus das es sich dabei auch um eine VBA handelt oder?
0 Punkte
Beantwortet von
Hallo Community

Einzufügen

Alt+F11/Projektexplorer/DieseArbeitsmappe

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  logFile "Close (" & IIf(Me.Saved, "S", "Uns") & "aved)"
End Sub
Private Sub Workbook_BeforePrint(Cancel As Boolean)
  logFile "Print (" & Application.ActivePrinter & ")"
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  logFile "Save"
End Sub
Private Sub Workbook_NewSheet(ByVal Sh As Object)
  logFile "Sheet Add", Sh.Name
End Sub
Private Sub Workbook_Open()
  logFile "Open"
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  logFile "Change", Sh.Name, Target.Address(0, 0), Target(1, 1).Value
End Sub
Public Sub logFile(ByVal Action As String, Optional Sheet As String, Optional ByVal Target As String, Optional ByVal Value As String)
  Dim strLogFile As String, strTmp As String, strAux As String * 12
  strLogFile = ThisWorkbook.Path & Application.PathSeparator & ThisWorkbook.Name & "_log.txt"
  strTmp = Format(Now, "dd.MM.yyyy hh:mm:ss") & vbTab
  strAux = Environ("USERNAME")
  strTmp = strTmp & strAux
  strAux = Action
  strTmp = strTmp & strAux
  If Len(Sheet) Then strAux = Sheet: strTmp = strTmp & strAux
  If Len(Target) Then strAux = Target: strTmp = strTmp & strAux
  If Len(Value) Then strTmp = strTmp & Value
  Open strLogFile For Append As #1
  Print #1, strTmp
  Close #1
End Sub

Logdatei(.txt) im aktuellen Verzeichnis!

Gruß Michael
0 Punkte
Beantwortet von fat61 Einsteiger_in (49 Punkte)
Vielen Dank Michael, das bedeutet dann aber das ich für jede Exceldatei (Forumlar) eine logdatei habe oder.

Geil wäre wenn er die Logdatei in die VBA schreibt. Das wäre was.
...