Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
956to960
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
956to960
956to960
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Textdatei: prüfen ob verändert

Textdatei: prüfen ob verändert
06.03.2008 09:38:53
Daniel
Hallo!
Ich muss in einem Ablauf prüfen, ob sich eine Textdatei geändert hat,
um dann ein weiteres Makro anzustoßen.
Das Ganze muss möglichst effizient laufen, d.h. die Prüfung sollte eigentlich
ständig stattfinden, und dabei möglichst wenig CPU verbauchen.
Gibt es dazu brauchbare Ansätze?
Danke,
Daniel

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textdatei: prüfen ob verändert
06.03.2008 10:49:00
Heiko
Hallo Daniel,
mein Vorschlag nur das Datum der letzten Speicherung merken und vergleichen, das geht ziemlich schnell.
z.B. so:

Sub Aenderung()
Dim objFs As Object, objFile As Object
Dim strPathAndFile As String
' Pfad und datei NATÜRLICH anpassen !!!
strPathAndFile = "C:\Copy\Probe.txt"
Set objFs = CreateObject("Scripting.FileSystemObject")
Set objFile = objFs.GetFile(strPathAndFile)
' In Zelle B2 (Beispiel) schreibt man dann den letzetn Wert um damit zu vergleichen
If objFile.DateLastModified  ThisWorkbook.Worksheets("Tabelle1").Range("B2") Then
ThisWorkbook.Worksheets("Tabelle1").Range("B2") = objFile.DateLastModified
MsgBox "Hier wurd was verändert !", vbCritical
' Und dein anderes Makro anstoßen
End If
' Zur Not könnte man auch noch die Größe vergleichen, ob sich da was verändert hat.
' MsgBox objFile.Size
Set objFs = Nothing
Set objFile = Nothing
End Sub


Gruß Heiko
PS: Rückmeldung wäre nett !

Anzeige
AW: Textdatei: prüfen ob verändert
06.03.2008 10:59:00
Daniel
Hallo Heiko,
ja das sieht gut aus.
Jetzt fehlt nur noch, dass das Makro ständig im Hintergrund läuft. Wie macht man das?

AW: Textdatei: prüfen ob verändert
06.03.2008 11:04:00
Daniel
Wenn ich es mir genau überlege, ist die Prüfung der Dateigröße sogar sinnvoller!
Was muss ich dazu ändern, also statt Datum die Größe prüfen.

AW: Textdatei: prüfen ob verändert
06.03.2008 11:32:00
Heiko
Hallo Daniel,
z.B. so:
Aber ACHTUNG, wenn jemand in der Datei nur einen Buchstaben oder andere Einträge ändert, dann ändert sich nicht die Größe der Datei wohl aber ihr Speicherdatum.
Und was meinst du mit dauernt laufen / überprüfen.

Sub Aenderung()
Dim objFs As Object, objFile As Object
Dim strPathAndFile As String
' Pfad und datei NATÜRLICH anpassen !!!
strPathAndFile = "C:\Copy\Probe.txt"
Set objFs = CreateObject("Scripting.FileSystemObject")
Set objFile = objFs.GetFile(strPathAndFile)
' In Zelle B2 (Beispiel) schreibt man dann den letzten Wert um damit zu vergleichen
' If objFile.DateLastModified  ThisWorkbook.Worksheets("Tabelle1").Range("B2") Then
If objFile.Size  ThisWorkbook.Worksheets("Tabelle1").Range("B3") Then
' ThisWorkbook.Worksheets("Tabelle1").Range("B2") = objFile.DateLastModified
ThisWorkbook.Worksheets("Tabelle1").Range("B3") = objFile.Size
MsgBox "Hier wurde was verändert !", vbCritical
' Und dein anderes Makro anstoßen
End If
' Zur Not könnte man auch noch die Größe vergleichen, ob sich da was verändert hat.
' MsgBox objFile.Size
Set objFs = Nothing
Set objFile = Nothing
End Sub


Gruß Heiko
PS: Rückmeldung wäre nett !

Anzeige
AW: Textdatei: prüfen ob verändert
06.03.2008 12:22:40
Daniel
Hallo Heiko,
mit dauernd meine ich, dass es z.B. von 9:30 bis 16:00 Uhr durchläuft. Am besten jede Millisekunde.

AW: Textdatei: prüfen ob verändert
06.03.2008 12:38:32
Heiko
Hallo Daniel,
warum ?!
Und wenn es wirklich nötig ist, soll EXCEL und dein Rechner dann noch irgendwas anderes machen ?! Oder nur noch nachschauen ob das Terxtfile sich geändert hat.
Gruß Heiko
PS: Rückmeldung wäre nett !

AW: Textdatei: prüfen ob verändert
06.03.2008 12:39:00
Daniel
Ist das so performance lastig?

AW: Textdatei: prüfen ob verändert
06.03.2008 12:49:00
Heiko
Hallo ,
ja ist es! Denn im Millisekundenbereich ist das eine Schleife die immer durchläuft und somit dein EXCEL VBA mäßig schon mal voll auslastet.
Mit Excel Boardmitteln geht das maximal im Sekundenbereich mit Application.OnTime. Stoppen des Prozesses z.B. mit Beenden von Excel, oder eine Stopproutine reinprogrammieren.

Public Function Aenderung(strPathAndFile As String) As Boolean
Dim objFs As Object, objFile As Object
Set objFs = CreateObject("Scripting.FileSystemObject")
Set objFile = objFs.GetFile(strPathAndFile)
If objFile.Size  ThisWorkbook.Worksheets("Tabelle1").Range("B3") Then
ThisWorkbook.Worksheets("Tabelle1").Range("B3") = objFile.Size
Aenderung = True
Exit Function
End If
Set objFs = Nothing
Set objFile = Nothing
Aenderung = False
End Function


Sub UeberpruefungStarten()
If Aenderung("C:\Copy\Probe.txt") Then
MsgBox "Wieder was verändert!", vbInformation
End If
Application.OnTime Now + TimeValue("00:00:01"), "UeberpruefungStarten"
End Sub


Gruß Heiko
PS: Rückmeldung wäre nett !

Anzeige
AW: Textdatei: prüfen ob verändert
06.03.2008 13:57:00
Daniel
Okay, danke. Das scheint auf den 1. Blick gut zu gehen. Und ich liege mit der PC Auslastung um 10%.
Also kleiner als 1 Sekunde kann man gar nicht machen?

AW: Textdatei: prüfen ob verändert
06.03.2008 14:08:10
Heiko
Hallo Daniel,
mit einem vertretbaren Aufwand ist das nicht zu machen, da, wie gesagt, ein Excel Bordmittel dafür nicht vorhanden ist.
Man müßte sich da was eigenes stricken über API und ähnlich komplizierte Dinge, bei VBA Kaum nicht zu empfehlen.
Gruß Heiko
PS: Rückmeldung wäre nett !

AW: Textdatei: prüfen ob verändert
06.03.2008 14:32:52
Daniel
Alles klar. Danke auf jeden Fall für die tolle Hilfe!
Eine abschließende Frage noch: ich habe nun in einer zelle =Jetzt() stehen. Das aktualisiert sich aber nicht. Hängt das nun mit diesen Makros zusammen die sekündlich laufen?

Anzeige
AW: Textdatei: prüfen ob verändert
06.03.2008 14:47:00
Heiko
Hallo Daniel,
=Jetzt() wird nur aktualisiert wenn das Blatt neu berechnet wird, also irgendeine Formel berechnet wird weil sich im Blatt was ändert.
Wenn du nur =Jetzt() im Blatt hast würde sich diese Zelle erst bei erneuten öffnen oder bei drücken von Taste F9 neu berechnen.
Du könntest in das Makro das alle Sekunde gestartet wird, ein
ActiveWorkbook.Worksheets("Tabelle1").Calculate
integrieren dann würde alle Sekunde das Blatt neu berechnet.
Wenn da aber viele Formel drin sind, würde das natürlich auch wieder bremsen.
Gruß Heiko
PS: Rückmeldung wäre nett !

Anzeige
AW: Textdatei: prüfen ob verändert
06.03.2008 15:04:21
Daniel
Gut, war auch nur interessehalber. Wobei das im weiteren Verlauf meines "Projekts" schon eine Rolle spielen wird. Mal sehen. Danke Dir auf jeden Fall.

AW: Textdatei: prüfen ob verändert
06.03.2008 16:56:39
Daniel
Dann muss ich doch noch die Bitte nach einer Stopp-Prozedur stellen.
Wie stoppe ich den Ablauf (außer Excel zu beenden?)

AW: Textdatei: prüfen ob verändert
06.03.2008 20:37:49
Heiko
Hallo,
da gibt es soviele Möglichkeiten, die aber von der restlichen Programmierung und Struktur der Datei abhängen.
Eine Möglichkeit, in eine Zelle schreiben ob Pruefen oder halt nicht, z.B. so:

Sub UeberpruefungStarten()
If ThisWorkbook.Worksheets("Tabelle1").Range("B4") = "Pruefen" Then
If Aenderung("C:\Copy\Probe.txt") Then
MsgBox "Wieder was verändert!", vbInformation
End If
Application.OnTime Now + TimeValue("00:00:01"), "UeberpruefungStarten"
End If
End Sub


Oder ein globale Variable nutzen, z.B. mit einem Commandbutton setzten und bei Bedarf darüber auch wieder zurücksetzen.
Oder oder oder, mußt du halt mal ein bisschen rumprobieren.
Gruß Heiko

Anzeige
AW: Textdatei: prüfen ob verändert
06.03.2008 18:22:00
firmus
Hallo Daniel,
zu =jetzt()
Läßt sich nicht das Tabellenblatt ansprechen und in die Zelle der AKTUELLE Zeitwert setzen.
z.B:
Cells(1, 2) = Format(Now, "hh:mm:ss") schreibt in B1 bei jedem Durchlauf die aktuelle Zeit.
Gruß
Firmus

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige