Se guardi le proprietà memorizzate con una cartella di lavoro, noterai che Excel mantiene un bel po ‘di informazioni relative al file. Uno degli elementi è una data e un’ora che vengono semplicemente indicate come “Modificate”. Molte persone si riferiscono a questa come alla data di “ultima modifica”, ma riflette davvero l’ultima volta che la cartella di lavoro è stata salvata.

Se vuoi usare questa data nella tua cartella di lavoro (magari in un’intestazione o un piè di pagina), puoi farlo usando la proprietà BuiltinDocumentProperties (che sembra quasi ridondante). La seguente macro aggiungerà la data corretta all’intestazione del documento:

Sub MyHeader1()

Dim sLMD As String

On Error Resume Next

sLMD = ActiveWorkbook.BuiltinDocumentProperties("Last Save Time")

If Err = 440 Then         Err = 0         sLMD = "Not Set"

End If     sLMD = Left(sLMD, 8)

ActiveSheet.PageSetup.LeftHeader = "Last Saved: " & sLMD End Sub

Ci sono diversi elementi da notare in questa macro. Prima di tutto, tenta di determinare l’ultima data in cui la cartella di lavoro è stata salvata. Se non è possibile determinare tali informazioni, imposta l’intestazione su “Non impostato”.

Si noti che in questa macro viene eseguita una gestione degli errori. Il motivo è che Excel restituirà un errore se una particolare proprietà del documento (BuiltinDocumentProperties in questo caso) non è impostata. L’errore deve essere intercettato e gestito, operazione che viene eseguita qui.

C’è un altro elemento da notare qui. In alcune versioni di Excel, il valore Err restituito se la proprietà non è impostata non è realmente 440 (come mostrato qui), ma un altro numero dispari, come -2147467259. Questo è davvero bizzarro, davvero. Perché il valore 440 (che è il codice di errore corretto)

verrebbe restituito in una circostanza e non in un’altra, non lo so.

(Forse qualche altro guru di Excel saprà la risposta.) Se hai questo problema, ci sono due approcci che puoi adottare. Innanzitutto, puoi sostituire il valore 440 con l’altro valore (-2147467259). La seconda opzione, supponendo che tu abbia già salvato la cartella di lavoro almeno una volta, consiste nell’usare una macro diversa. Quanto segue legge l’attributo “ultima modifica” dal file stesso e memorizza le informazioni nell’intestazione:

Sub MyHeader2()

Dim fs As Variant     Dim f As Variant     Dim sLMD As String

Set fs = CreateObject("Scripting.FileSystemObject")

Set f = fs.GetFile(ActiveWorkbook.Path & "\" & _       ActiveWorkbook.Name)

sLMD = Left(f.DateLastModified, 8)

ActiveSheet.PageSetup.LeftHeader = "Last Modified: " & sLMD End Sub

Indipendentemente dalla macro che utilizzi, ricorda che la macro, una volta eseguita, imposterà l’intestazione di sinistra sulle informazioni desiderate. Quelle informazioni non cambieranno di nuovo finché non esegui nuovamente la macro. Pertanto, se si desidera sempre una data aggiornata nell’intestazione, è necessario eseguire periodicamente la macro (forse subito prima della stampa) o impostarla per l’esecuzione ogni volta che si apre il documento.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (7764) si applica a Microsoft Excel 2007, 2010 e 2013. Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: