Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ordner überwachen auf neue Dateien

Ordner überwachen auf neue Dateien
10.05.2017 16:44:50
Frank
Hallo,
ich möchte über VBA einen Ordner daraufhin überwachen, ob eine xls Datei hinein kopiert wurde (diese wird von einem Meßinstrument erzeugt). Sobald eine neue Datei darin auftaucht, soll eine Aktion erfolgen.
In diesem Fall sollen bestimmte Inhalte aus der neuen Datei in eine andere Datei kopiert werden. Diesen Part kann ich alleine lösen.
Was mir fehlt ist die Überwachung des Ordners auf eine neue Datei.
Dies soll ja über die OnTime Funktion gehen.
Dazu habe ich auch einen Code im Archiv gefunden, welcher bei Auftauchen neuer Dateien im zu überwachenden Ordner diese in einen anderen Ordner verschiebt.
Problem bei dem Code ist, daß nach Start der Sub Start_Prozedur() nur beim ersten Mal eine neue Datei verschoben wird, alle danach in den Ordner kopierten Dateien werden nicht mehr verschoben.
Hier der Beitrag mit Code
Tino schrieb am 11.02.2010 17:03:42
Hallo,
versuch mal dies.
Ziel, Quelle und Dateiextension noch anpassen.
Über OnTime wird der Code jede Minute ausgeführt.
kommt als Code in DieseArbeitsmappe
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call StopTimer
End Sub
kommt als Code in Modul1
Option Explicit
Public dTimer As Date
Sub Start_Prozedur()
Call StartTimer
End Sub
Sub Stop_Prozedur()
Call StopTimer
End Sub
Sub StartTimer()
dTimer = Now + TimeSerial(0, 0, 10) 'Timer auf eine Minute
Application.OnTime dTimer, "Check_Ordner"
End Sub
Sub StopTimer()
On Error Resume Next
Application.OnTime dTimer, "Check_Ordner", Schedule:=False
End Sub
Sub Check_Ordner()
Dim strFile As String
'welche Ordner überwachen
Const strQuelle As String = "C:\L-PC\Musik\"
'welche Dateien suchen
Const DateiTyp As String = "*.xls"
'Ziel, wo sollen die Dateien hin
Const strZiel As String = "C:\L-PC\Test\"
strFile = Dir(strQuelle & DateiTyp)
On Error Resume Next 'sollte Datei geöffnet sein
Do While strFile  ""
Name strQuelle & strFile As strZiel & strFile
strFile = Dir()
Loop
Call StartTimer
End Sub
Gruß Frank
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ordner überwachen auf neue Dateien
10.05.2017 18:29:30
Oberschlumpf
Hi Frank,
dir ist aber bewusst, dass die Excel-Überwachungs-Datei die ganze Zeit geöffnet sein muss, wenn sie denn in einem bestimmten Stunden?/Minuten?/Sekunden?-Intervall den Inhalt eines bestimmten Verzeichnisses nach Veränderungen überprüfen soll, oder?
Ciao
Thorsten
AW: Ordner überwachen auf neue Dateien
11.05.2017 12:54:47
Frank
Hi Oberschlumpf,
das ist OK, weil ich sie nur öffne, wenn ich Messungen durchführe (1x im Monat 150 Messungen).
Anzeige
AW: Ordner überwachen auf neue Dateien
10.05.2017 22:33:38
Fennek
Hallo,
aus xl-Sicht in "onTime" sicher die beste Lösung, aber es gibt auch Alternativen, die ohne ein ständig geöffnete xl auskommen:
- der windows-Taskmanager kann in beliebigen Zeitintervallen eine Prüfung ausführen
- mit wscript sollte es auch gehen: https://blogs.technet.microsoft.com/heyscriptingguy/2004/10/11/how-can-i-automatically-run-a-script-any-time-a-file-is-added-to-a-folder/
Bleibt die Frage, wer den Code schreiben kann.
mfg
Anzeige
AW:MD5Hasher
11.05.2017 11:31:00
Fennek
Hallo,
aus Zufall bin ich auf diesen link gestoßen:
https://www.heise.de/download/products/sicherheit#?cat=sicherheit&page=2
Nach der Kurzbescshreibung soll der MD5hasher auch Ordner überwachen können.
Ich kenne das Programm nicht, aber falls du es testen möchtest, würde mich das Ergebnis interessieren.
mfg
Anzeige
AW: AW:MD5Hasher
11.05.2017 13:03:20
Frank
Hi Fennek,
danke, aber wie soll ich mit diesen Lösungen im Anschluss Inhalte aus der neu eingestellten Excel Datei in die Excel Datei einstellen, welche die Ergebnisse der einzelnen Messungen sammeln soll?
Die Überwachung muss schon innerhalb von Excel passieren, damit ich bei Eintreten des Ereignisses die anschliessenden Operationen durchführen kann.
Gruß Frank
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Ordnerüberwachung in Excel: Neue Dateien erkennen und verarbeiten


Schritt-für-Schritt-Anleitung

Um einen Ordner auf neue Dateien zu überwachen, kannst Du den folgenden VBA-Code verwenden. Dieser Code wird regelmäßig ausgeführt und überprüft, ob neue .xls-Dateien in dem angegebenen Ordner vorhanden sind. Wenn neue Dateien gefunden werden, werden sie in einen anderen Ordner verschoben.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge den folgenden Code in das Modul „DieseArbeitsmappe“ ein:

    Option Explicit
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
       Call StopTimer
    End Sub
  3. Füge diesen Code in ein neues Modul (z.B. Modul1) ein:

    Option Explicit
    Public dTimer As Date
    Sub Start_Prozedur()
       Call StartTimer
    End Sub
    Sub Stop_Prozedur()
       Call StopTimer
    End Sub
    Sub StartTimer()
       dTimer = Now + TimeSerial(0, 0, 10) 'Timer auf 10 Sekunden
       Application.OnTime dTimer, "Check_Ordner"
    End Sub
    Sub StopTimer()
       On Error Resume Next
       Application.OnTime dTimer, "Check_Ordner", Schedule:=False
    End Sub
    Sub Check_Ordner()
       Dim strFile As String
       Const strQuelle As String = "C:\L-PC\Musik\"
       Const DateiTyp As String = "*.xls"
       Const strZiel As String = "C:\L-PC\Test\"
       strFile = Dir(strQuelle & DateiTyp)
       On Error Resume Next
       Do While strFile <> ""
           Name strQuelle & strFile As strZiel & strFile
           strFile = Dir()
       Loop
       Call StartTimer
    End Sub
  4. Passe die Pfade (strQuelle und strZiel) sowie die Dateiendung (DateiTyp) nach Bedarf an.

  5. Starte die Überwachung, indem Du die Funktion Start_Prozedur aufrufst.


Häufige Fehler und Lösungen

  • Problem: Der Code verschiebt nur beim ersten Mal eine neue Datei.

    • Lösung: Stelle sicher, dass die StartTimer-Funktion korrekt aufgerufen wird, um die Überwachung fortzusetzen.
  • Problem: Excel muss ständig geöffnet sein.

    • Lösung: Das ist korrekt, da der Code nur funktioniert, wenn die Excel-Datei aktiv ist.
  • Problem: „Datei nicht gefunden“ Fehler.

    • Lösung: Überprüfe, ob der Pfad zu den Ordnern korrekt angegeben ist und dass die Datei nicht geöffnet ist.

Alternative Methoden

Falls Du eine Ordnerüberwachung ohne eine ständig geöffnete Excel-Anwendung bevorzugst, kannst Du folgende Alternativen in Betracht ziehen:

  • Windows-Taskmanager: Du kannst einen Task einrichten, der in bestimmten Intervallen ein Skript ausführt, um den Ordner zu überprüfen.

  • WScript: Mit Windows Scripting Host kannst Du Skripte schreiben, die auf neue Dateien in einem Ordner reagieren. Hier ist ein nützlicher Link.


Praktische Beispiele

Ein einfaches Beispiel könnte sein, dass Du alle neuen Messdaten von einem Messinstrument in einem bestimmten Ordner hast. Sobald eine neue .xls-Datei dort erscheint, wird sie automatisch in einen anderen Ordner verschoben und Du kannst die Daten weiterverarbeiten.

Const strQuelle As String = "C:\L-PC\Messdaten\"
Const strZiel As String = "C:\L-PC\Archiv\"

Durch Anpassung der Pfade kannst Du die Ordnerüberwachung auf Deine spezifischen Bedürfnisse zuschneiden.


Tipps für Profis

  • Optimierung: Wenn Du mit großen Datenmengen arbeitest, überlege, die Intervalle für die Überprüfung zu erhöhen, um die Performance nicht zu beeinträchtigen.

  • Benachrichtigung: Füge eine Benachrichtigungsfunktion hinzu, die Dich informiert, wenn eine neue Datei erkannt wird.

  • Logging: Implementiere eine Log-Datei, die alle verschobenen Dateien aufzeichnet, um einen Überblick zu behalten.


FAQ: Häufige Fragen

1. Muss Excel ständig geöffnet sein, um den Ordner zu überwachen? Ja, die Excel-Anwendung muss offen sein, damit die OnTime-Funktion regelmäßig den Ordner überprüfen kann.

2. Was passiert, wenn die Excel-Datei während der Überwachung geschlossen wird? Der Timer wird gestoppt und die Überwachung des Ordners wird eingestellt, bis die Datei erneut geöffnet wird.

3. Kann ich auch andere Dateiformate überwachen? Ja, Du kannst die Dateiendung im Code anpassen, um auch andere Dateitypen zu überwachen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige