ricky53 ha scritto:Ciao,
tempo fa avevo realizzato un "prodotto" per chiudere un file XLS se non veniva aggiornato dopo "nn" secondi o veniva "Deattivato" il file in utilizzo.
Vi riporto il codice che ho utilizzato ed allego un esempio.
Da inserire in un "MODULO"
- Codice: Seleziona tutto
Public Dato As String, Nome_File As String
Public Orario_Precedente As Date, Orario_Attuale As Date, Orario_Nuovo As Date, _
DeltaA As Date, DeltaT As Date
Sub TempoX()
DeltaA = "00:00:20"
Orario_Attuale = Time
Leggi_Tempo
Ora = Left(Right(Dato, 8), 2)
Min = Left(Right(Dato, 5), 2)
Sec = Right(Dato, 2)
Orario_Precedente = Ora & ":" & Min & ":" & Sec
Orario_Nuovo = Orario_Precedente + DeltaA
If Orario_Attuale > Orario_Nuovo Then
Chiudi
Exit Sub
End If
Application.OnTime Now + TimeValue(DeltaA), "TempoX"
End Sub
Sub Chiudi()
MsgBox "'Chiusura Automatica' del file per tempo msssimo raggiunto senza aggiornamenti" & _
Chr(13) & Chr(13) & "Il file verrà comunque salvato !!!"""
ThisWorkbook.Close SaveChanges:=True ' <<------------ RIATTIVARE a fine prove !!!!
End Sub
Sub Scrivi_Tempo()
Nome_File = "D:\Tempo.txt"
Dato = Date & "-" & Format(Time, "hh:mm:ss")
Open Nome_File For Output As #1
Write #1, Dato
Close 1
MsgBox "Inizio temporizzazione per chiusura automatica dopo: " & DeltaT
End Sub
Sub Leggi_Tempo()
Nome_File = "D:\Tempo.txt"
Open Nome_File For Input As #1
Input #1, Dato
Close 1
End Sub[code]
Da inserire in un "ThisWorkbook"
[code]Private Sub Workbook_Activate()
DeltaT = "00:00:10"
Scrivi_Tempo
TempoX
End Sub
Private Sub Workbook_Deactivate()
DeltaT = "00:00:15"
Application.OnTime Now + TimeValue(DeltaT), "Chiudi"
End Sub
Private Sub Workbook_Open()
DeltaT = "00:01:00"
Scrivi_Tempo
End Sub
[code]
Da inserire nel vai fogli
[/code]Private Sub Worksheet_Activate()
Scrivi_Tempo
End Sub
Gli intervalli del tempo di attesa sono volutamente "piccoli" per consentire le prove: vanno adattati in base alle esigenze.
L'esempio è
QUESTO
Ciao Ricky,
sto usando la tua macro e in azienda riusciamo a gestire molto meglio il lavoro. Grazie.
Credo però che serva ancora una messa a punto delle variabili di tempo. Sinceramente non ho capito bene ogni deltaT a cosa si riferisca.
di seguito come li ho impostati nella macro:
In this workbook ho:
- Workbook_Activate()
DeltaT = "00:30:00"
- Workbook_Deactivate()
DeltaT = "00:10:00"
In modulo ho:
- Scrivi_Tempo()
....
If DeltaT = "00:00:00" Then
Exit Sub
poi nei vari fogli ho messo questo:
Private Sub Workbook_Open()
Scrivi_Tempo
End Sub
Succede spesso che il file si chiude mentre ci si sta lavorando.
Grazie mille per l'aiuto
Andrae