Condividi:        

Macro chiusura file a tempo: problemi per chiusura manuale

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Macro chiusura file a tempo: problemi per chiusura manuale

Postdi alby60 » 09/12/11 19:00

Ciao, ho la necessità di chiudere automaticamente un file dopo DeltaT minuti ed utilizzo il seguente codice, inserito nel Modulo1:
Codice: Seleziona tutto
Public DeltaT As String

Sub Controlla_Tempo()
    If Sheets("Menu").[A1] + TimeValue(DeltaT) < Time Then
       ThisWorkbook.Close SaveChanges:=True
    End If
    Application.OnTime Now + TimeValue(DeltaT), "Controlla_Tempo"
End Sub

A1 e DeltaT vengono impostati all’apertura del file con
Codice: Seleziona tutto
 Private Sub Workbook_Open()
    Sheets("Menu").[A1] = Time
    DeltaT = "00:15:00"
    Controlla_Tempo
End Sub
 
tutto funziona bene tranne il caso in cui io decida di chiudere il file prima del tempo DeltaT, in questo caso il file viene riaperto automaticamente allo scadere del tempo “DeltaT”. La domanda è la seguente: come posso evitare questa situazione. C’è un comando che annulli l'istruzione
Codice: Seleziona tutto
Application.OnTime Now + TimeValue(DeltaT), "Controlla_Tempo"
che è in attesa dello scadere del tempo DeltaT ?
alby60
Utente Junior
 
Post: 76
Iscritto il: 18/11/10 01:04

Sponsor
 

Re: Macro chiusura file a tempo: problemi per chiusura manua

Postdi alby60 » 10/12/11 00:37

Ciao a tutti, in un altro forum ho ricevuto le indicazioni SEGUENTI le ho applicate così
Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnTime Now + TimeValue(DeltaT), "Controlla_Tempo", , False
End Sub
ed ho ottenuto il seguente messaggio
Immagine
invece con
Codice: Seleziona tutto
Application.OnTime Now + TimeValue(DeltaT), "Controlla_Tempo", , True
non ottengo errori. Non capisco il motivo. Sapete darmi qualche indicazione su come poter risolvere? Grazie anticipato a chi saprà aiutarmi
alby60
Utente Junior
 
Post: 76
Iscritto il: 18/11/10 01:04

Re: Macro chiusura file a tempo: problemi per chiusura manua

Postdi Anthony47 » 10/12/11 17:13

invece con
Codice: Seleziona tutto
    Application.OnTime Now + TimeValue(DeltaT), "Controlla_Tempo", , True

non ottengo errori.

In realta' con questa istruzione incasini vieppiu' :D perche' aggiungi una ulteriore schedulazione della macro che volevi deschedulare.

Creati una variabile pubblica (Public NextSched as Double ' da mettere in testa a un "Modulo standard") e poi usa questa per calcolare e impostare la prossima schedulazione.
Cioe' invece di Application.OnTime Now + TimeValue(DeltaT), "Controlla_Tempo" userai
Codice: Seleziona tutto
NextSched = Now + TimeValue(DeltaT)
    Application.OnTime Now + NextSched, "Controlla_Tempo"

Poi nella Sub Workbook_BeforeClose userai
Codice: Seleziona tutto
    Application.OnTime NextSched, "Controlla_Tempo", , False


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro chiusura file a tempo: problemi per chiusura manua

Postdi alby60 » 10/12/11 18:15

Ciao, si vero. ho provato con quanto mi hai indicato e FUNZIONA. GRAZIE. Riporto il codice finale
Codice: Seleziona tutto
Public DeltaT As String, Prossimo As Date

Sub Controlla_Tempo()
    If Sheets("Menu").[A1] + TimeValue(DeltaT) < Time Then
       ThisWorkbook.Close SaveChanges:=True
    End If
    Prossimo = Now + TimeValue(DeltaT)
    Application.OnTime Prossimo, "Controlla_Tempo", , True
End Sub

e
Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnTime Prossimo, "Controlla_Tempo", , False
End Sub

Private Sub Workbook_Open()
    Sheets("Menu").[A1] = Time
    DeltaT = "00:15:00"
    Controlla_Tempo
End Sub
alby60
Utente Junior
 
Post: 76
Iscritto il: 18/11/10 01:04

Re: Macro chiusura file a tempo: problemi per chiusura manua

Postdi Anthony47 » 10/12/11 21:46

Sei stato molto delicato, non sottolineando l' errore (di trascrizione) nel codice che avevo suggerito; cosi' pero' tocca farlo a me!
Errato:
NextSched = Now + TimeValue(DeltaT)
Application.OnTime Now + NextSched, "Controlla_Tempo"
Corretto:
NextSched = Now + TimeValue(DeltaT)
Application.OnTime NextSched, "Controlla_Tempo" 'Cosa c' entrava ancora NOW?


Ciao a tutti
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro chiusura file a tempo: problemi per chiusura manua

Postdi alby60 » 11/12/11 00:30

Ciao, veramente non mi ero accorto dell'errore di trascrizione perchè avevo letto quanto mi avevi indicato, poi avevo lavorato sul mio file con le mie variabili e il Now non l'avevo scritto. Grazie di nuovo
alby60
Utente Junior
 
Post: 76
Iscritto il: 18/11/10 01:04


Torna a Applicazioni Office Windows


Topic correlati a "Macro chiusura file a tempo: problemi per chiusura manuale":


Chi c’è in linea

Visitano il forum: Nessuno e 18 ospiti