Quando sviluppi un foglio di lavoro, potrebbe essere necessario tenere traccia di alcune informazioni sulla cartella di lavoro. Ad esempio, potresti voler inserire la data di creazione della cartella di lavoro in una cella. Sebbene Excel fornisca alcune funzioni per le date (come ADESSO o OGGI), non fornisce una funzione per accedere alla data di creazione della cartella di lavoro.
Ciò significa che l’unico modo per ottenerla risiede nell’utilizzo di una macro. Ad esempio, potresti creare una macro che determini la data corrente e la inserisca (come testo) in una cella particolare. Questa macro potrebbe quindi essere eseguita ogni volta che crei una nuova cartella di lavoro se inserisci la macro nel gestore eventi Workbook_Open (dell’oggetto Questa_cartella_di_lavoro). Di seguito è riportato un esempio di tale macro:
Private Sub Workbook_Open()
If Worksheets.Application.Range("A1") = "" Then
Worksheets.Application.Range("A1") = Format(Date, "long Date")
End If
End Sub
La macro verifica cosa c’è nella cella A1. Se non c’è nulla, inserisce la versione testuale della data odierna. Se c’è già qualcosa (il che avverrebbe ogni volta che si aprisse successivamente la cartella di lavoro), l’informazione verrà lasciata intatta.
Forse un approccio migliore, tuttavia, consiste nell’accedere effettivamente al sistema operativo e recuperare la data di creazione del file per la cartella di lavoro corrente. Questo può essere fatto con la seguente funzione:
Function DataCreazione() As String
Dim Temp As String
On Error Resume Next
Temp = CreateObject("scripting.filesystemobject"). _
GetFile(ActiveWorkbook.FullName).dateCreated
If Err.Number <> 0 Then
DataCreazione = "File non ancora salvato"
Else
DataCreazione = Left(Temp, InStr(Temp, " ") - 1)
End If
On Error Goto 0
End Function
Tieni presente che questo approccio non è legato a una cella particolare nel tuo foglio di lavoro. Per utilizzare la macro, inserisci semplicemente quanto segue in qualsiasi cella del tuo foglio di lavoro:
=DataCreazione()
La funzione restituisce “File non ancora salvato” (se la cartella di lavoro è nuova e non è stata salvata in precedenza) oppure restituisce un valore di testo che rappresenta la data in cui è stata creata la cartella di lavoro.
La data di creazione restituita da FileSystemObject (Windows) utilizzata nell’UDF non è però sempre affidabile. Quando copi un file, Windows mostra la data di copiatura come data di creazione. Lavorando con la copia otterresti quindi una data di creazione falsa.
Excel, però, tiene traccia della data di creazione reale ed è possibile accedervi tramite VBA con BuiltinDocumentProperties(“Creation Date”).
Volendo pertanto utilizzare questo metodo, dovremmo modificare il codice delle due macro mostrate finora in questo modo:
Private Sub Workbook_Open()
Worksheets(1).Range("A1")=ActiveWorkbook.BuiltinDocumentProperties("Creation Date")
End Sub
Con questo metodo non è necessario verificare se A1 ha già una data perché essa non cambierà.
Function DataCreazione()
DataCreazione = ActiveWorkbook.BuiltinDocumentProperties("Creation Date")
End Function
in entrambi i casi, la cella di destinazione dovrà essere formattata come data ed il gioco è fatto.