Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Problema VBA e Macro: Riapertura in Loop del file a chiusura anticipata

Ultimo Aggiornamento: 12/10/2018 09:43
Post: 1
Registrato il: 26/09/2018
Città: NETTUNO
Età: 36
Utente Junior
2016
OFFLINE
11/10/2018 13:51

Buongiorno
scrivo a voi per avere supporto su un rompicapo che non riesco a risolvere.
Avevo la necessità di creare un file utilizzato da più utenti in condivisione su Dropbox.
Il mio scopo era di creare un controllo che permettesse all'apertura di sapere se il file era o meno utilizzato in maniera da evitare le fastidiose "copie di conflitto" che giustamente dropbox crea se più utenti utilizzano il file in contemporanea.
Per questo ho utilizzato due macro: una per autosave e una per autoclose trascorso un certo periodo di tempo dall'apertura.
Le macro e il file funzionano.
Ho soltanto un problema: se il file viene chiuso in maniera prematura dall'utente prima che le macro terminino l'esecuzione il file si riapre in continuazione.
Ho provato a cercare sul web una soluzione a tutto ciò ma ciò che ho trovato non mi ha aiutato.
Questo benedetto file si riapre sempre.
Qui di seguito inoltro il codice da me utilizzato:

Codice in "ThisWorkbook"

Private Sub Workbook_Open()

If Sheets("Record").Range("K2") <> "" Then

MsgBox "Il file è già utilizzato da " & UserName & ". Ritorna più tardi"

ThisWorkbook.Close SaveChanges:=False

End If

Userform1.Show

DTime = Time

Application.OnTime DTime + TimeValue("00:00:05"), "SaveMe_MistakesandAll"

Application.OnTime DTime + TimeValue("00:20:00"), "CloseMe_MistakesandAll"

End Sub



Private Sub Workbook_BeforeClose(Cancel As Boolean)

Run "Limpa"

Dim Current As Range

Set Current = Sheets("Record").Range("K2")

result = 0

Current.Value = UserName

result = 1

ThisWorkbook.Save

End Sub



Codice "Macro"


Sub Limpa()

    On Error Resume Next

    Application.OnTime DTime + TimeValue("00:02:30"), "SaveMe_MistakesandAll", , False

    Application.OnTime DTime + TimeValue("00:20:00"), "CloseMe_MistakesandAll", , False

    On Error GoTo 0

End Sub


Public DTime As Date


Sub SaveMe_MistakesandAll()

DTime = Time

Application.OnTime DTime + TimeValue("00:02:30"), "SaveMe_MistakesandAll"

ThisWorkbook.Save

End Sub


Sub CloseMe_MistakesandAll()

DTime = Time

Application.OnTime DTime + TimeValue("00:20:00"), "CloseMe_MistakesandAll"

Dim Current As Range

Set Current = Sheets("Record").Range("K2")

result = 0

Current.Value = UserName

result = 1

ThisWorkbook.Close SaveChanges:=True

End Sub


Il mio problema: interrompere l'esecuzione delle macro a chiusura anticipata.

Potete aiutarmi?

Grazie mille

Saluti
Roberto
Post: 1.946
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
12/10/2018 09:43

ciao
non è semplice risponderti senza vedere realmente cosa accade.

Ricostruendo per sommi capi le tue procedure su pc non ho riscontrato la riapertura del file, ma ho notato soltanto:

1) Public DTime As Date
non può stare tra le due macro ma deve stare ad inizio modulo.
Credo comunque sia un refuso da parte tua, perchè excel segnalerebbe
l'errore.

2) solo per fare un tentativo (altro non saprei suggerirti) prova a modificare "Limpa" nel seguente modo:

Application.OnTime DTime, "SaveMe_MistakesandAll", , False

Application.OnTime DTime, "CloseMe_MistakesandAll", , False

togliendo il + TimeValue(....) da entrambe

Ripeto è solo un tentativo.

saluti
[Modificato da dodo47 12/10/2018 09:44]
Domenico
Win 10 - Excel 2016
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 07:46. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com