Excel VBA - Änderungsprotokoll - Einschränkungen möglich?

Moderator: ModerationP

Excel VBA - Änderungsprotokoll - Einschränkungen möglich?

Beitragvon Strahle1337 » 06. Aug 2018, 07:38

[edit by CaBe: Code als Code formatiert]
Hallo liebe Excelfreunde,

ich komme bei meinem aktuellen Makro nicht weiter und habe gehofft, dass von euch evtl. jemand eine Idee hat.
Ich vermute allerdings, dass das was ich gerne hätte, nicht umsetzbar ist.

Ich habe eine Datei, die von vielen Leuten gepflegt wird.
Leider werden öfters mal komische Sachen gepflegt bzw. Werte überschrieben, so dass ich ein Änderungsprotokoll einfügen möchte.

Dafür habe ich bereits den folgenden Code aus dem Forum benutzt.

Code: Alles auswählen
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> "Tabelle6" Then sValue = ActiveCell.Value
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
Dim intZeile As Integer
If Sh.Name = "Tabelle6" Then Exit Sub
If sValue <> Target.Value Then
    With Worksheets("Tabelle6")
        Application.EnableEvents = False
        intZeile = .Cells(Rows.Count, "A").End(xlUp).Row + 1
        .Cells(intZeile, 1).Value = Sh.Name
        .Cells(intZeile, 2).Value = Sh.Cells(Target.Row, 1)
        .Cells(intZeile, 3).Value = Sh.Cells(5, Target.Column)
        .Cells(intZeile, 4).Value = sValue
        .Cells(intZeile, 5).Value = Target.Value
        .Cells(intZeile, 6).Value = Environ("username")
        .Cells(intZeile, 7).Value = Date
        .Cells(intZeile, 8).Value = Time
        Application.EnableEvents = True
    End With
End If
End Sub


Das funktioniert soweit auch super gut.
Allerdings sind in der Datei noch weitere Makros, die z.B. Autofilter auf bestimmte Spalten setzen, bestimmte Spalten ausblenden oder auch Formeln schreiben, die für den Ablauf des Makros benötigt werden.

Das o.a. Makro für das Änderungsprotokoll zeichnet jetzt natürlich auch all diese Veränderungen auf.
Wenn ich die Datei öffne, erscheint direkt eine Userform, auf der ich verschiedene "Presets" auswählen kann und er die Tabelle dann entsprechend filtert. Nur dadurch werden schon über 1200 Einträge in das Änderungsprotokoll geschrieben.

Nun zu meiner Frage.
Seht ihr eine Möglichkeit, z.B. Änderungen am Autofilter von der Protokollierung auszuschließen?
Oder z.B. das Spalten ein- und ausblenden nicht mit zu protokollieren?
Am besten wäre natürlich wenn man ihm irgendwie sagen könnte, dass alles was durch Makros in der Tabelle geändert wird nicht aufgezeichnet wird.

Mich interessiert eigentlich nur was durch andere Benutzer in der Tabelle verändert oder ergänzt wird.
Achso, die Datei soll nicht freigegeben werden. Also die Funktion von Excel selbst kann ich leider nicht benutzen.

Ich würde mich über Anregungen dazu sehr freuen bzw. ich bin auch beruhigt, wenn ich bestätigt bekomme, dass das nicht umsetzbar ist.

Liebe Grüße und vielen Dank schon mal!
Strahle1337
 

Re: Excel VBA - Änderungsprotokoll - Einschränkungen möglich

Beitragvon CaBe » 06. Aug 2018, 08:24

Hallo Strahle1337,

grundsätzlich solltest du bei solchen Überwachungstools beachten, dass dies mit dem "Arbeitsüberwachungsgesetz" kollidiert. Eine derartige Protokollierung mit Datum und Usernamen ist in den meisten Betrieben strikt untersagt.
Nun aber zu den Möglichkeiten von Excel. Ich denke, man kann bestimmte Änderungen an der Datei abfangen. Zunächst würde die Routine Worksheet_Change() aufgerufen werden. Aber man kann ja direkt abfangen, was geändert wurde und demnach entscheiden, ob nun noch die Eintragung erfolgen soll. Im Falle eines Filters könnte man also untersuchen, ob nun Zeilen ausgeblendet sind. Falls auf dem gesamten Sheet Zeilen ausgeblendet sind, dann "Exit Sub".
Freundlichst
Carsten

Keine Antwort wäre wirklich schade! Windows 10 Pro, Office 2016 Pro Deutsch, manchmal Office 2016 Pro Englisch
Jede Änderung meiner Beiträge durch andere Benutzer möge bitte mit Grund und Namen gekennzeichnet werden.
Benutzeravatar
CaBe
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5535
Registriert: 06. Apr 2005, 09:20
Wohnort: Bremen

Re: Excel VBA - Änderungsprotokoll - Einschränkungen möglich

Beitragvon DerHoepp » 06. Aug 2018, 08:28

Hallo Strahle,

du kannst die Event-Überwachung doch einfach während deiner Vorlaufmakros ausschalten. Dann wird auch nichts geloggt. Alternativ kannst du das natürlich auch mit einer eigenen Boolean-Variable tun. Noch eine Anmerkung zu deinem Code:
Ich persönlich würde auf ExitSub verzichten und stattdessen einen leeren Else-Zweig nutzen. Dann bleibt dein Code erweiterbar. Verzichte zudem auf On Error Resume Next, mit Ausnahme für jeweils genau eine Codezeile, wenn du genau begründen kannst, wofür du Fehlermeldungen unterdrücken willst. Zeilennummern sollten als Long dimensioniert sein:

Code: Alles auswählen
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   Dim intZeile As Long
   If Sh.Name <> "Tabelle6" Then
      If sValue <> Target.Value Then
          With Worksheets("Tabelle6")
              Application.EnableEvents = False
              intZeile = .Cells(Rows.Count, "A").End(xlUp).Row + 1
              '[...]
              Application.EnableEvents = True
          End With
      End If
   End If
End Sub


Beachte zusätzlich, dass du momentan nicht abgreifst, wenn mehr als eine Zelle gleichzeitig geändert wird.

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7262
Registriert: 14. Mai 2013, 11:08

Re: Excel VBA - Änderungsprotokoll - Einschränkungen möglich

Beitragvon Strahle1337 » 06. Aug 2018, 16:07

Hallo Cabe, hallo Höpp,

vielen, lieben Dank für eure Lösungsansätze. Ihr seid echt klasse!!

Das mit den mehreren Zellen gleichzeitig ändern ist mir auch schon aufgefallen.
Dafür hatte ich allerdings noch keinen guten Lösungsansatz.
Ich kann halt VBA nur so einigermaßen gut und oft komme ich nicht selbst auf die Lösung, so dass ich meist das Internet zur Hilfe nehme.

Eure Lösungsansätze haben mir auf jeden Fall schon mal dahingehend geholfen, dass ich jetzt weiß das ich definierte Situationen abfangen könnte.
Allerdings können die Makros, die beim Start laufen auch später noch per Button in der Tabelle aufgerufen werden.

Dein Hinweis Cape, bezüglich des Arbeitsüberwachungsgesetzes, war auch mega gut!!
Dadurch hat sich das Thema für mich auch schon erledigt...

Auf jeden Fall noch mal vielen, vielen Dank für eure Unterstützung!

VG
Strahle1337
Strahle1337
 


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: Andreas1963, MisterBurns und 21 Gäste