Registrare gli accessi ai file di Excel 2007 con VBA

di Giulio Vito de Musso

Pubblicato 15 Dicembre 2009
Aggiornato 12 Febbraio 2018 20:41

logo PMI+ logo PMI+

A volte può essere utile registrare il nome dell’utilizzatore di un file XLS.

Ad esempio, potremmo voler sapere chi e quando ha avuto accesso al nostro documento.

Vediamo, quindi, come è possibile memorizzare gli accessi di un file Excel grazie a delle semplici ma efficaci funzioni di VBA.

Per prima cosa apriamo il nostro file Excel e salviamolo in formato “.XLSM“.

Adesso apriamo l’editor di VBA (Sviluppo -> Visual Basic) e andiamo alla schermata del codice del nostro gruppo di lavoro (doppio click su “ThisWorkbook“, presente nel pannello degli oggetti a sinistra).

Incolliamo nella finestra il seguente codice:


Public strNome As String
Public datData As Date
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'variabile da valorizzare
NomePercorso = "C:percorsoalfile.txt"
If Dir(nomepercorso, vbNormal) = "" Then
Open NomePercorso For Output As #1
Print #1, "Data accesso", "|", "Nome"
Close #1
End If
Open nomepercorso For Append As #1
Print #1, datData, "|", strNome
Close #1
End Sub
Sub Workbook_Open()
Do
strNome = InputBox("Qual'è il tuo nome?" & vbNewLine & "Digitare 'Esci' per chiudere il file.", "Registrazione utente")
datData = Date
If StrConv(strNome, 1) = "ESCI" Then
ActiveWorkbook.Save
ActiveWindow.Close
End If
Loop While strNome = ""
End Sub

Ricordiamoci di valorizzare la variabile “NomePercorso” con il percorso al file in cui vogliamo registrare gli accessi. Questo file può anche non esistere.

Salviamo il tutto e chiudiamo il file di Excel. Per una corretta registrazione, cancelliamo il file delle registrazioni che sarà stato creato (o riscritto se già presente) alla prima chiusura del file Excel.

Da ora in poi all’apertura del file vi verrà richiesto di inserire il vostro nome e sarà determinata la data di accesso, mentre alla chiusura sarà aggiornato il file delle registrazioni, leggibile con tutti gli editor di testo, anche il semplice blocco note.