Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Prüfen ob sich Inhalt geändert hat

Forumthread: Prüfen ob sich Inhalt geändert hat

Prüfen ob sich Inhalt geändert hat
Frank
Hallo Zusammen,
ich habe mal eine Frage.
Ist es möglich beim Schließen der Datei zu überprüfen ob sich der Inhalt geändert hat?
Hintergund: Ich mache beim Schließen einer Datei eine Sicherungskopie auf dem Server.
Nun möchte ich aber nur eine Sicherheitskopie erstellen wenn sich der Inhalt ändert
Gruß
Frank
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Prüfen ob sich Inhalt geändert hat
25.05.2012 08:01:39
hary
Hallo Frank
Teste mal so.

Option Explicit
'Kommt in ein Modul
Public geaendert As Boolean

Option Explicit
'Codes in den Code der Arbeitsmappe
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If geaendert = True Then
'Dein Code
End If
geaendert = False
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
geaendert = True
MsgBox geaendert
End Sub

gruss hary
Anzeige
AW: Prüfen ob sich Inhalt geändert hat
25.05.2012 08:09:11
Frank
Hallo Harry,
klappt super.
Vielen lieben Dank und ein schönes Wochenende
Gruß
Frank
AW: Bitte, ebenso. owT. Gruss
25.05.2012 08:11:11
hary
.
AW: Prüfen ob sich Inhalt geändert hat
25.05.2012 08:20:09
Reinhard
Hallo Frank,
Harys Code reagiert nicht auf alles. Blätter löschen, Blätter einfügen, Zeilen einfügen...
Probiere mal dieses:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not ThisWorkbook.Saved Then
'DeinCode
End If
End Sub

Gruß
Reinhard
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Änderungen im Excel-Dokument erkennen und Sicherheitskopien erstellen


Schritt-für-Schritt-Anleitung

Um zu überprüfen, ob sich der Inhalt einer Excel-Datei geändert hat, kannst Du VBA (Visual Basic for Applications) verwenden. Folge dieser Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Option Explicit
    'Kommt in ein Modul
    Public geaendert As Boolean
  4. Füge den Arbeitsmappen-Code hinzu:

    • Doppelklicke im Projektfenster auf DieseArbeitsmappe, um den Code für die Arbeitsmappe zu bearbeiten.
    • Füge den folgenden Code ein:
      
      Private Sub Workbook_BeforeClose(Cancel As Boolean)
      If geaendert = True Then
         'Dein Code für die Sicherungskopie
      End If
      geaendert = False
      End Sub

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) geaendert = True End Sub

  5. Speichere die Arbeitsmappe als Makro-fähige Datei:

    • Wähle Datei > Speichern unter und wähle den Dateityp Excel-Arbeitsmappe mit Makros.

Jetzt wird beim Schließen der Datei überprüft, ob Änderungen vorgenommen wurden.


Häufige Fehler und Lösungen

  1. Der Code reagiert nicht auf alle Änderungen:

    • Möglicherweise liegt es daran, dass bestimmte Aktionen wie das Löschen oder Einfügen von Zeilen nicht als Änderungen registriert werden. Verwende stattdessen diesen Code:
      Private Sub Workbook_BeforeClose(Cancel As Boolean)
      If Not ThisWorkbook.Saved Then
         'Dein Code für die Sicherungskopie
      End If
      End Sub
  2. Die Sicherheitskopie wird immer erstellt:

    • Überprüfe, ob der geaendert-Flag korrekt gesetzt wird. Wenn er nicht auf True gesetzt wird, wird die Sicherheitskopie immer erstellt.

Alternative Methoden

Eine alternative Methode, um Änderungen zu überwachen, ist die Verwendung von Excel-Datenüberprüfung oder -Formeln. In diesem Fall kannst Du folgende Schritte durchführen:

  1. Nutze die Funktion =ISTLEER():

    • Überwache spezifische Zellen auf Änderungen, indem Du eine Formel erstellst, die prüft, ob eine Zelle leer ist oder nicht.
  2. Verwende die Überwachungsfunktion in Excel:

    • Excel bietet auch Funktionen zur Überwachung von Änderungen in der Funktionen "Änderungen nachverfolgen". Du kannst dies unter Überprüfen > Änderungen nachverfolgen aktivieren.

Praktische Beispiele

Angenommen, Du möchtest eine Sicherheitskopie der Datei erstellen, wenn der Benutzer Änderungen an den Daten vorgenommen hat:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If geaendert Then
        ThisWorkbook.SaveCopyAs "Pfad\zur\Sicherheitskopie_" & Format(Now, "YYYYMMDD_HHMMSS") & ".xlsm"
    End If
    geaendert = False
End Sub

Dieses Beispiel erstellt eine Kopie der Arbeitsmappe mit einem Zeitstempel, was die Verwaltung der Sicherheitskopien erleichtert.


Tipps für Profis

  • Verwende Application.OnUndo: Du kannst eine Rückgängig-Funktion implementieren, um sicherzustellen, dass Änderungen bei Bedarf rückgängig gemacht werden können.
  • Erstelle eine Benutzeroberfläche: Wenn Du regelmäßig Sicherungskopien erstellen möchtest, erwäge, eine Schaltfläche zu erstellen, die den Backup-Code ausführt.
  • Teste den Code: Stelle sicher, dass Du den Code in einer Testumgebung ausprobierst, bevor Du ihn in einem produktiven Dokument verwendest.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass der Code auf alle Blätter reagiert? Der Code für Workbook_SheetChange sollte alle Änderungen an den Blättern erfassen. Achte darauf, diesen im richtigen Bereich einzufügen.

2. Funktioniert dieser Code in Excel 2016 und späteren Versionen? Ja, der VBA-Code sollte in Excel 2016 und späteren Versionen ohne Probleme funktionieren. Achte darauf, dass die Makros in den Excel-Einstellungen aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige