- Codice: Seleziona tutto
Public InFoc
Public Flag1
Private Declare Function GetActiveWindow Lib "user32" () As Long
Sub InFocusYN()
If GetActiveWindow <> Application.Hwnd Then
If InFoc = True Then InFoc = Now()
Else
InFoc = True
End If
'If Flag1 = False Then ThisWorkbook.Close SaveChanges:=True 'oppure False
If InFoc <> True Then
If InFoc + TimeValue("00:15:00") < Now Then
ThisWorkbook.Close SaveChanges:=True 'oppure False
End If
End If
If Flag1 <> True Then '**Vedi descrizione
If Flag1 + TimeValue("00:15:00") < Now Then
' ThisWorkbook.Close SaveChanges:=True 'oppure False
End If
End If
DeltaT = "00:01:00"
Application.OnTime Now + TimeValue(DeltaT), "InFocusYN"
End Sub
Private Sub Workbook_Activate() ' Gestione Flag1, INVARIATA
Flag1 = True
End Sub
Private Sub Workbook_Deactivate() 'Gestione Flag1, VARIATA
Flag1 = Now()
End Sub
Private Sub Workbook_Open() 'AGGIUNTA per lanciare InFocYN la prima volta
Flag1=True
Call InFocusYN
End Sub
funziona perfettamente per lo scopo in oggetto, però c'è un problema, se l'utente salva e chiude il file manualmente prima dello scadere del tempo lasciando attivo excel , la macro continua a lavorare e RIAPRE il file.
2 domande:
1) si può ovviare a questo inconveniente ?
2) perché vengono usati 2 flag (flag1 e InFoc) non ne potrebbe bastare uno ?