AW: Makro automatisch starten wenn letze Änderung ....
27.08.2011 12:09:08
Tino
Hallo,
die letzte Änderung wird in einen Namen gespeichert.
Dieser Code wird beim öffnen von Excel gestartet und danach mit Application.OnTime
in regelmäßigen Abständen ausgeführt. (im Bsp. alle 10 Minuten) .
Im Code habe ich mal zum testen Msgboxen eingebaut,
diese würde ich natürlich durch eine andere Anzeige ersetzen,
wenn eine Anzeige überhaupt nötig ist.
kommt als Code in DieseArbeitsmappe
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call StopTimer
End Sub
Private Sub Workbook_Open()
Call Check_Aenderung 'beim öffnen direkt einmal ausführen
Call StartTimer 'danach mit Timer
End Sub
kommt als Code in ein Modul
Option Explicit
Public nTime As Date
Sub StartTimer()
Const intIntervallMinute% = 10 'Intervall in Minuten
nTime = Now + TimeSerial(0, intIntervallMinute, 0)
Application.OnTime EarliestTime:=nTime, Procedure:="Start"
End Sub
Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=nTime, Procedure:="Start", Schedule:=False
nTime = 0
End Sub
Sub Start()
Call Check_Aenderung
Call StartTimer
End Sub
Sub Check_Aenderung()
Dim FSO As Object, F1 As Object
Dim myName As Name, DatumAenderung As Date, booGeaendert As Boolean
Dim strFile As String
'hier die Textdatei, Pfad + Name
strFile = "G:\1 Forum\Neues Textdokument.txt"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set F1 = FSO.GetFile(strFile)
DatumAenderung = F1.DateLastModified 'letzte Änderung
booGeaendert = True
With ThisWorkbook
For Each myName In .Names
If myName.Name = "FileDatum" Then
booGeaendert = CDate(CDbl(Replace(myName.RefersToLocal, "=", ""))) < DatumAenderung
Exit For
End If
Next myName
If booGeaendert Then
.Names.Add Name:="FileDatum", RefersToLocal:=CDbl(DatumAenderung)
.Save 'speichern damit Änderung erhalten bleibt
End If
End With
If booGeaendert Then Call Start_Mein_Beispiel_Makro 'hier Dein Makro starten
MsgBox "geht"
End Sub
Sub Start_Mein_Beispiel_Makro()
MsgBox "Datei wurde geändert!"
End Sub
Gruß Tino