Menu

Excel Macro: Creare un log con orario apertura e chiusura di un file di excel

9 agosto 2016 - Excel macro

Per avere un registro dove poter segnare le modifiche fatte ad un file possiamo precedere in questo modo.

Inseriamo un nuovo foglio di lavoro

2016.08.03-15:49:20Spazio di lavoro 1

Tasto destro su Foglio4

2016.08.03-15:50:17Spazio di lavoro 1

Rinominiamolo in Log

2016.08.03-15:50:21Spazio di lavoro 1

Doppio click su Questa_cartella_di_lavoro per le 2007 e sucessive o ThisWorkbook nella versione 2003 di Excel

2016.08.03-16:34:08Spazio di lavoro 1

Nel menù a tendina al posto di (generale) scegliamo Workbook ed al posto di (dichiarazioni) scegliamo Open ed incolliamo il codice riportato a fine archivio

 

La Funzione End(xlUp) parte dalla riga 65000 e sale fino alla prima riga occupata. Con Offset (1,0) specifichiamo di scrivere nella riga sottostante all’ultima ma nella medesima colonna.

Con gli End(xlUp) sucessivi non abbiamo bisogno di offset per la riga ma per la colonna

2016.08.04-13:13:30Spazio di lavoro 1

Riepilogando avremo nella colonna A la data in B l’ora di apertura in D L’utente e dall’immagine sottostante ricaviamo che in C abbiamo l’orario di chiusura mentre in F il nome del file

Ora al posto di Open nel menù a tendina scegliamo BeforeClose ed incolliamo il codice che trovate in fondo all’articolo

2016.08.04-12:59:45Spazio di lavoro 1

A questo punto non ci resta che mettere una piccola formula per determinare quanto è rimasto aperto il file

Compiliamo la riga 1 come in figura nella colonna E mettiamo questa formula =SE(C2=””;””;C2-B2) e la trasciniamo per qualche centinaio di celle

La funzione sarebbe Se C2 è vuota allora lascia vuota la cella altrimenti metti il risultato C2-B2

2016.08.04-13:10:36Spazio di lavoro 1

2016.08.04-00:41:39Spazio di lavoro 1

 

Private Sub workbook_open()
    Sheets("Log").Range("A65000").End(xlUp).Offset(1, 0).Value = Date
    Sheets("Log").Range("A65000").End(xlUp).Offset(0, 1).Value = Time
    Sheets("Log").Range("A65000").End(xlUp).Offset(0, 3).Value = Application.UserName
End Sub

 

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Sheets("Log").Range("A65000").End(xlUp).Offset(0, 2).Value = Time
    Sheets("Log").Range("A65000").End(xlUp).Offset(0, 5).Value = ThisWorkbook.Name
End Sub

Come sempre il file log potrebbe essere nascosto cliccando con il tasto destro sopra la linguetta del nome del foglio e selezionando Nascondi

Lascia un commento