Per una guida per principianti non devi chiedere su questo forum
Una Sub Worksheet_Change scatta ogni qualvolta lo specifico foglio su cui la macro viene installata viene modificato.
Poiche' l'azione che si vuole compiere (File Save) e' relativamente lenta e' bene impostare un'area le cui modifiche fanno scattare l'operazione.
Supponiamo che le tue modifiche (quelle che vuoi siano portate rapidamente a conoscenza degli altri utenti del file) siano concentrate sul foglio "PIPPO" nell'area A1:A100. Ora partendo da Excel, col file di lavoro aperto:
-tasto dx sul tab col nome foglio (PIPPO); scegli Visualizza codice
-si apre l'ambiente di sviluppo delle macro nella pagina giusta
-copia questo codice e incollalo nel frame vuoto di dx:
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRan As String
'
myRan = "A1:A100" '<<< L'area per i cui cambiamenti viene subito fatto un File Save
If Application.Intersect(Target, Range(myRan)) Is Nothing Then Exit Sub
Debug.Print Now, Target.Address
ThisWorkbook.Save
End Sub
Da questo momento, quando fai una modifica nell'area indicata il file verra' automaticamente salvato, ottenendo il primo risultato.
Ora e' ovvo che se gli altri utenti aprono il file la mattina e lo chiudono la sera essi non vedranno niente di quanto hai modificato nella giornata. Per questo occorre che nei pc degli utenti ci sia il "lanciatore".
Quindi crea possibilmente su un altro PC (abilitato a condividere il file principale) un nuovo file e chiamalo LANCIATORE.xlsm
Sul primo foglio scrivi qualcosa tipo "Questo file gestisce l'apertura e l'aggiornamento automatico del file XXX; se avete problemi contattate con fiducia systemcrack al numero di cellulare (il tuo numero)"; colora inoltre lo sfondo in qualche colore vivace per poterlo identificare facilmente, e magari elimina tutti gli altri fogli predisposti nel file.
Poi, partendo da Excel, usa Alt-F11 per accedere all'ambiente di sviluppo macro; fai doppioclick sulla voce
Questa_Cartella_di_Lavoro. Per capire dove cercarla guarda questo messaggio:
viewtopic.php?f=26&t=103893&p=622593#p622593Una volta attivato il modulo Questa_Cartella_di_Lavoro, inserisci il codice delle due macro
Private Sub Workbook_BeforeClose e
Private Sub Workbook_Open come ti sono gia' note; personalizza le righe marcate <<< con Percorso e nome del file che il Lanciatore deve da aprire e aggiornare.
Infine devi inserire "in un modulo standard" il resto del codice; per questo, laorando nell'ambiente di sviluppo macro, eseguire il comando Meu /Inserisci /Modulo.
In questo nuovo "modulo standard" appena creato metterai il resto del codice, a partire da
Public myNext As Date; anche qui devi specializzare la riga marcata <<< come fatto prima.
A questo punto hai il tuo ambiente di prova.
Salva Lanciatore.xlsm, chiudilo e riaprilo: dovrebbe aprirsi anche il file principale in modalita' solo lettura che diventa il file attivo di Excel.
Modifica una cella senza salvare e aspetta max un minuto: il file dovrebbe nel frattempo venir chiuso e riaperto nella versione disponibile sul server; te ne accorgi perche' la tua modifica non c'e' piu'.
Val sul tuo pc e fai una modifica di quelle che provoca il salvataggio file.
Torna sul pc di prova e controlla che nell'arco di un minuto il file presenti la modifica introdotta dal tuo pc.
Se funziona sei a buon punto; adesso devi controllare con gli utenti che il tutto non interferisca con le loro attivita' sul pc, in particolare sul loro eventuale uso di Excel per altri scopi.
Quindi... good luck