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

Forumthread: Meldung wenn Datei geändert wurde

Meldung wenn Datei geändert wurde
06.03.2013 08:47:32
Giesarazu
Hallo Leute,
auf unserem Server liegt in einem Verzeichnis eine Excel-Datei, auf die alle Mitarbeiter Zugriff haben. Ist es möglich, dass ich eine Meldung auf dem Bildschirm erhalte, wenn eine Änderung in dieser Datei erfolgt ist (Änderung heißt, dass etwas hinzugefügt oder evt. auch gelöscht wurde) und von wem (application.username) )
Besten Dank für einen Tipp (oder Code)
Stefan

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Meldung wenn Datei geändert wurde
06.03.2013 09:48:01
Klaus
Hallo Stefan,
nein.
Wenn ein User bei SICH etwas ändert, löst das bei DIR kein OnChange-Ereigniss aus.
Was man machen könnte:
OnChange die Änderung mit environ("username") (nicht application.username) in eine seperate Textdatei schreiben. Diese kannst du dir dann ansehen, um Änderungen festzustellen.
Allerdings könntest du für das einsetzen eines solchen Codes durchaus eine Abmahung oder Kündigung kassieren (Stichwort Mitarbeiterüberwachung, einige Betriebsräte sehen sowas ganz eng). Wenns dir das Riskio Wert ist oder euer Firmenanwalt sagt "kein Problem bei uns", zeige ich dir gerne einen Code dafür.
Grüße,
Klaus M.vdT.

Anzeige
AW: Meldung wenn Datei geändert wurde
06.03.2013 10:25:07
Giesarazu
Hallo Klaus,
danke für den Hinweis, war mir gar nicht so klar! Du brauchst mir diesbezüglich keinen Code zu basteln (herzlichen Dank für den Vorschlag), DENN diese Datei ist ja eine öffentliche, die auf dem Server liegt (und keine, die beim User liegt).
Ich kann in einer solchen ja z.b. auch über "application.username" und "time" mit nem Private Sub Workbook_BeforeClose abfragen, wer sich diese Datei wann angesehen hat.
Meine Frage wäre also, ob es möglich ist, eine solche (öffentliche) Datei zu "überwachen" und eine message über msgbox aufpoppen zu lassen, wenn jemand geändert hat.
Gruß
Stefan

Anzeige
AW: Meldung wenn Datei geändert wurde
06.03.2013 10:35:39
Klaus
Meine Frage wäre also, ob es möglich ist, eine solche (öffentliche) Datei zu "überwachen" und eine message über msgbox aufpoppen zu lassen, wenn jemand geändert hat.
Meines Wissens nach ist das nicht möglich.
Grüße,
Klaus M.vdT.

AW: Meldung wenn Datei geändert wurde
06.03.2013 10:36:28
Giesarazu
alles klaro ! Danke Dir !

Anzeige
AW: Meldung wenn Datei geändert wurde
06.03.2013 11:57:32
Klaus
Hallo,
ich hab grad eine ganz wirre Idee.
mit dem Makro:
Sub WriteUpdateTime()
Dim LResult As Date
LResult = FileDateTime("C:\Dateien\Dateiname.xls")
Range("A1").Value = LResult
End Sub
Kannst du dir den Zeitpunkt der letzten Speicherung einer Datei in die Tabelle schreiben.
Wenn du dieses Makro mit "onTime" alle 5 Minuten aufrufst, hast du immer den Zeitpunkt der letzten Speicherung in einer Datei stehen.
das ganze KÖNNTE dann so funktionieren:
Public NextTime As Date
Option Explicit
Sub WriteUpdateTime()
Dim LResult As Date
LResult = FileDateTime(.Range("D6").Value & "\" & Range("F6").Value)
Range("A1").Value = LResult
If Range("A1").Value = Range("A2").Value Then
'nix
Else
'MsgBox ("ES WURDE GEÄNDERT")
End If
Start
End Sub
Sub Start()
NextTime = Now + TimeSerial(0, 1, 0)
Application.OnTime NextTime, "WriteUpdateTime", , True
End Sub
Sub Ende()
Application.OnTime NextTime, "WriteUpdateTime", , False
End Sub
Sub CheckFileMod()
WriteUpdateTime
Range("A2").Value = Range("A1").Value
End Sub
Du erstellst ein frisches Workbook mit diesen Makros. Beim Start rufst du "CheckFileMod" auf, das schreibt dir die letzte Speicherung in A1 und A2.
"WriteUpdateTime" ruft sich jede minute erneut selbst auf und schreibt die letzte Speicherungszeit in A1. Sind A1 und A2 nicht identisch, kommt die MsgBox.
Vergiss nicht, das ganze OnTime getue mit dem Makro "Ende" wieder zu beenden, wenn du die Mappe schließt!
Ist aus dem Ärmel geschüttelt und nicht getestet. Den Usernamen bekommt man bestimmt auch noch dazu, weiss ich grad nicht wie. Vielleicht klappt das ja. (Bedenke: schreibst du den Usernamen dazu, könnte das als Überwachung ausgelegt werden)
Grüße,
Klaus M.vdT.

Anzeige
AW: Meldung wenn Datei geändert wurde
06.03.2013 11:58:44
Klaus
statt
LResult = FileDateTime(.Range("D6").Value & "\" & Range("F6").Value)
natürlich
LResult = FileDateTime("C:\DeinPfad\DeineDatei.xls")
ich hab zu schnell auf senden geclickt.
Grüße,
Klaus M.vdT.

AW: Meldung wenn Datei geändert wurde
06.03.2013 12:01:41
Giesarazu
meine Güte, was hast Du Dir eine Mühe gemacht, ich bin sprachlos !!!!!!!!!!!!!
Tausend Dank, werde es zeitnah checken und mich melden (und ich melde mich wirklich, insbesondere für diesen Einsatz !!!

Anzeige
AW: Meldung wenn Datei geändert wurde
06.03.2013 12:20:07
Klaus
meine Güte, was hast Du Dir eine Mühe gemacht,
Es könnte sein, dass ich mir viel Mühe gemacht habe.
Es könnte auch sein, dass mir "LastSave-Makro mit OnTime kombinieren" gerade auf dem Klo eingefallen ist...
Bleiben wir dabei dass ich mir Mühe gemacht habe :-) Ich freue mich auf deine Rückmeldung.
Grüße,
Klaus M.vdT.

Anzeige
AW: Meldung wenn Datei geändert wurde
06.03.2013 12:32:39
Giesarazu
auf dem Klo lese ich immer focus-money

AW: Meldung wenn Datei geändert wurde
06.03.2013 15:17:29
Giesarazu
Hi Klaus,
habs eben mal installiert, funktioniert soweit echt super,nur wenn ich das Makro "Ende" starte, kommt die Meldung: "die Methode "Ontime" für das Objekt '_Application' ist fehlgeschlagen" obwohl Syntax und so ja alles korrekt scheint. Also beenden kann ichs nicht und die Meldung poppt nun natürlich ständig auf ;)

Anzeige
Keine Ahnung wie man Ontime beendet
06.03.2013 15:22:22
Klaus
Hi,
ich hab mir den Ontime-Code einfach zusammekopiert. Bitte frag in einem eigenem Thread, wie man den beendet ... ich hab keine Ahnung.
Wenns sonst läuft, ist ja schonmal gut!
Grüße,
Klaus M.vdT.

AW: Keine Ahnung wie man Ontime beendet
06.03.2013 15:23:20
Giesarazu
jau, echt geil !!! Besten Dank :)

Danke für die Rückmeldung! owT.
06.03.2013 15:28:36
Klaus
.
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Excel Benachrichtigung bei Änderungen in Dateien


Schritt-für-Schritt-Anleitung

Um eine Excel Benachrichtigung, wenn die Datei geändert wird, zu implementieren, kannst Du folgendes Makro verwenden:

  1. Öffne Excel und erstelle ein neues Workbook.
  2. Drücke ALT + F11, um die VBA-Entwicklungsumgebung zu öffnen.
  3. Füge ein neues Modul ein: Rechtsklick auf "VBAProject (DeineDatei)" > Einfügen > Modul.
  4. Kopiere und füge folgenden Code in das Modul ein:
Public NextTime As Date
Option Explicit

Sub WriteUpdateTime()
    Dim LResult As Date
    LResult = FileDateTime("C:\DeinPfad\DeineDatei.xls") ' Pfad zur Datei anpassen
    Range("A1").Value = LResult
    If Range("A1").Value <> Range("A2").Value Then
        MsgBox ("ES WURDE GEÄNDERT")
    End If
    Start
End Sub

Sub Start()
    NextTime = Now + TimeSerial(0, 1, 0) ' alle 1 Minute
    Application.OnTime NextTime, "WriteUpdateTime", , True
End Sub

Sub Ende()
    Application.OnTime NextTime, "WriteUpdateTime", , False
End Sub

Sub CheckFileMod()
    WriteUpdateTime
    Range("A2").Value = Range("A1").Value
End Sub
  1. Stelle sicher, dass der Pfad zur Datei korrekt ist.
  2. Rufe das Makro CheckFileMod beim Öffnen der Datei auf, um die Überwachung zu starten.
  3. Vergiss nicht, das Makro Ende aufzurufen, wenn die Datei geschlossen wird, um die Benachrichtigungen zu stoppen.

Häufige Fehler und Lösungen

  • Fehler: "Die Methode 'Ontime' für das Objekt '_Application' ist fehlgeschlagen"

    • Lösung: Stelle sicher, dass das Makro Ende korrekt aufgerufen wird, um die geplanten Ereignisse zu beenden.
  • Benachrichtigung nicht angezeigt

    • Lösung: Überprüfe, ob der Pfad zur Datei korrekt ist und ob das Makro CheckFileMod beim Öffnen der Datei ausgeführt wird.

Alternative Methoden

Falls Du keine Makros verwenden möchtest, kannst Du auch externe Tools oder Add-Ins verwenden, die speziell für die Überwachung von Dateiänderungen konzipiert sind. Tools wie FileAudit oder Folder Monitoring bieten oft benutzerfreundliche Oberflächen und erfordern keine Programmierkenntnisse.


Praktische Beispiele

Ein Beispiel für die Anwendung des oben genannten Makros könnte die Überwachung eines gemeinsamen Projektplans sein, der von mehreren Teammitgliedern bearbeitet wird. Du kannst den Pfad zur Datei anpassen und das Makro so konfigurieren, dass es die Änderungen in regelmäßigen Abständen überprüft.


Tipps für Profis

  • Verwende Application.Username in deinem Code, um den Namen des Benutzers zu erfassen, der die Änderungen vorgenommen hat. Dies kann hilfreich sein, um nachvollziehen zu können, wer eine Datei bearbeitet hat.

  • Experimentiere mit der Zeitspanne in der OnTime-Funktion, um die Frequenz der Überprüfungen anzupassen. Eine kürzere Zeitspanne kann nützlich sein, wenn häufige Änderungen erwartet werden.


FAQ: Häufige Fragen

1. Kann ich das Makro so anpassen, dass es mir auch den Benutzernamen anzeigt? Ja, Du kannst Application.Username in die MsgBox integrieren, um zu zeigen, welcher Benutzer die Änderung vorgenommen hat.

2. Ist es sicher, diese Art von Überwachung in einem Unternehmen einzusetzen? Das hängt von den Richtlinien Deines Unternehmens ab. Es ist ratsam, dies vorher mit der Personalabteilung oder dem Betriebsrat abzuklären, um rechtliche Probleme zu vermeiden.

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