Hallo zusammen,
ich habe bei uns in der Firma eine viel genutzte Datei mit einem Makro versehen, bei dem nach 5 minuten inaktivität die Datei gespeichert und geschlossen wird. Das tolle an der lösung ist, dass im linken unteren Teil des Fensters ein Timer läuft der nach z.b. einem Klick oder ähnlichem zurückgesetzt wird. Das Problem an der Sache ist folgendes: Wenn ich gleichzeitig noch eine andere Excel Datei mit einem Makro geöffnet habe, und die erste Datei schließe, wird Datei 1 immer wieder neu geöffnet. Ich habe zumindest schon mal gefunden dass es an der OnTime funktion liegen könnte. Leider beherrsche ich VBA nur so weit, dass ich code kopieren und einfügen kann. Ja, das Makro an sich ist auch nur kopiert. Es besteht übrigens nur aus einem Modul, einer Userform und dem Code in der Arbeitsmappe:
Modul1:
Public Const ciIntervall As Integer = 1
Public Const dsMacro As String = "AutoClose"
Public gdNextTime As Double
Private iWait As Integer
Const cMax = 300 ' -> 5 Minuten
Dim Zeit As Date
Sub AutoClose()
iWait = iWait + 1
If cMax - iWait > 0 Then
Application.StatusBar = Format(Zeit - TimeSerial(0, 0, iWait), "hh:mm:ss")
gdNextTime = Now + TimeSerial(0, 0, ciIntervall)
Application.OnTime gdNextTime, dsMacro
Else
ThisWorkbook.Save
ThisWorkbook.Close
End If
End Sub
Sub AutoCloseStart()
iWait = 0
Zeit = TimeSerial(0, 0, cMax)
Application.StatusBar = Zeit
Call AutoClose
End Sub
Sub AutoCloseStop()
On Error Resume Next
Application.StatusBar = ""
Application.OnTime earliesttime:=gdNextTime, _
procedure:=dsMacro, schedule:=False
End Sub
Code Arbeitsmappe:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Call AutoCloseStop
End Sub
Private Sub Workbook_Open()
Load StartInfo
StartInfo.StartUpPosition = 2
StartInfo.Show
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
AutoCloseStop
AutoCloseStart
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
AutoCloseStop
AutoCloseStart
End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
AutoCloseStop
AutoCloseStart
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
AutoCloseStop
AutoCloseStart
End Sub
Hat hier jemand einen Tipp oder eine Idee wie ich das erneute öffnen der Datei verhindern kann?
Danke und viele Grüße
|