Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
840to844
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
840to844
840to844
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

*.TXT Datei prüfen

*.TXT Datei prüfen
04.02.2007 12:02:06
jens
Hallo
ich möchte eine textdatei prüfen ob sie alle 5 min aktualisiert wurde.
(last save time)
in einer Zelle soll der pfad stehen (//xy/xyz/zzz.txt). wenn sie nicht aktualidiert wurde soll eine userform öffnen.
bitte um eure hilfe
gruß, jens

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

Betreff
Datum
Anwender
Anzeige
AW: *.TXT Datei prüfen
04.02.2007 15:31:40
Ramses
Hallo
Ohne Userform.
Probier mal.
Du musst nur die Zeit und den Filenamen im ersten Makro anpassen.
In der Funktion musst du nichts machen oder ändern
Option Explicit

Dim OldSavedTime As String

Sub Start_TextFile_Check()
    Application.OnTime Now + TimeValue("00:05:00"), "TextFile_Check(""C:\demo.txt"", 5)"
End Sub

Function TextFile_Check(fileName As String, chkMinutes As Integer)
    Dim myFSO As Object, myFile As Object
    Dim myWSH As Object, msgInfo As Integer
    Dim tmpTime As String
    Set myFSO = CreateObject("Scripting.FileSystemObject")
    Set myFile = myFSO.getfile(fileName)
    Debug.Print myFile.dateLastModified
    'Prüfung bei erstem Aufruf der Funktion
    If OldSavedTime = "" Then
        OldSavedTime = myFile.dateLastModified
        Set myFSO = Nothing
        Set myFile = Nothing
        Exit Function
    End If
    'Zeit extrahieren
    tmpTime = Right(myFile.dateLastModified, 8)
    Debug.Print TimeValue(OldSavedTime) - TimeValue(tmpTime)
    Debug.Print TimeValue(OldSavedTime)
    Debug.Print TimeValue(tmpTime)
    Debug.Print TimeSerial(0, chkMinutes, 0)
    If TimeValue(OldSavedTime) - TimeValue(tmpTime) > TimeSerial(0, chkMinutes, 0) Or TimeValue(OldSavedTime) = TimeValue(tmpTime) Then
        MsgBox fileName & " wurde nicht aktualisiert" & vbCrLf & "Makro angehalten, zur itterativen Prüfung neu starten", vbOKOnly, "ACHTUNG"
        Set myFSO = Nothing
        Set myFile = Nothing
        Exit Function
    Else
        Set myWSH = CreateObject("WScript.Shell")
        'Infobox verschwindet nach 5 Sekunden wieder
        msgInfo = myWSH.Popup(fileName & " wurde aktualisiert...", 5, "Info", vbOKOnly)
        OldSavedTime = myFile.dateLastModified
    End If
    Set myFSO = Nothing
    Set myFile = Nothing
    Set myWSH = Nothing
    Start_TextFile_Check
End Function


Ich glaube das erklärt sich von selbst
Gruss Rainer
Anzeige
Korrektur....
04.02.2007 15:41:17
Ramses
Hallo
Sorry, der Code tut nicht weil ich eine Parameterfunktion aufrufe :-(
Nicht lange genug getestet ;-)
So geht es.
Die Anpassungen hinter den "Const" Anweisungen vornehmen
An den Makros nichts verändern
Option Explicit

Dim OldSavedTime As String
Const fileName As String = "C:\Demo.txt"
Const chkMinutes As Integer = 5

Sub Start_TextFile_Check()
    Application.OnTime Now + TimeSerial(0, chkMinutes, 0), "TextFile_Check()"
End Sub

Function TextFile_Check()
    Dim myFSO As Object, myFile As Object
    Dim myWSH As Object, msgInfo As Integer
    Dim tmpTime As String
    Set myFSO = CreateObject("Scripting.FileSystemObject")
    Set myFile = myFSO.getfile(fileName)
    Debug.Print myFile.dateLastModified
    'Prüfung bei erstem Aufruf der Funktion
    If OldSavedTime = "" Then
        OldSavedTime = myFile.dateLastModified
        Set myFSO = Nothing
        Set myFile = Nothing
        Exit Function
    End If
    'Zeit extrahieren
    tmpTime = Right(myFile.dateLastModified, 8)
    If TimeValue(OldSavedTime) - TimeValue(tmpTime) > TimeSerial(0, chkMinutes, 0) Or TimeValue(OldSavedTime) = TimeValue(tmpTime) Then
        MsgBox fileName & " wurde nicht aktualisiert" & vbCrLf & "Makro angehalten, zur itterativen Prüfung neu starten", vbOKOnly, "ACHTUNG"
        Set myFSO = Nothing
        Set myFile = Nothing
        Exit Function
    Else
        Set myWSH = CreateObject("WScript.Shell")
        'Infobox verschwindet nach 5 Sekunden wieder
        msgInfo = myWSH.Popup(fileName & " wurde aktualisiert...", 5, "Info", vbOKOnly)
        OldSavedTime = myFile.dateLastModified
    End If
    Set myFSO = Nothing
    Set myFile = Nothing
    Set myWSH = Nothing
    Start_TextFile_Check
End Function

Gruss Rainer
Anzeige
Verdammt.,... und nochmal:
04.02.2007 15:58:49
Ramses
Hallo
Sorry für die Verwirrung, muss wohl an der fortgeschritten Stunde hier liegen :-(
Kopiere den Code wie oben gezeigt in dein Modul.
DANACH änderst du
Function TextFile_Check....
in
Sub TextFile_Check
Also nur "Function" gegen "Sub" ersetzen.
Den Rest sollte EXCEL dann automatisch anpassen (Alle "Exit Function" gegen "Exit Sub" austauschen.
Gruss Rainer
Danke
04.02.2007 16:36:09
jens
hallo rainer
ich wusste garnicht, das dies so aufwendig ist.
ich danke dir vielmals.
werde eszu später stunde testen.
mfg, jens

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige