View Full Version : [VBA Excel] aggiornare valore celle Before Save
banryu79
18-12-2009, 12:02
Salve,
non so niente di VBA Excel, ma ho bisogno, in un foglio di calcolo, di aggiornare il valore di due celle al salvataggio delle mofiche apportate al foglio stesso.
In particolare, essendo il foglio di calcolo locato in un server in lan a cui possono accedere più utenti, vorrei salvare in una cella la data del momento in cui viene effettuato il salvataggio e l'autore.
Ho aperto Microsoft Visual Basic dal contesto del foglio di calcolo, ho selezionato come oggetto ThisWorkbook e ho trovato la routine BeforeSave che, ad intuito, credo risponda all'evento che fa al caso mio.
Ora, molto francamente: cosa ci devo scrivere dentro?
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
// ...?
End Sub
Grazie mille :)
Private Sub workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheets("Foglio1").Range("A1").Value = Now()
Sheets("Foglio1").Range("A2").Value = Application.UserName
End Sub
banryu79
18-12-2009, 12:51
Ciao zuper,
grazie funziona a meraviglia, ho fatto così:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheets("RO100").Range("A1").Value = "Last Modified"
Sheets("RO100").Range("A2").Value = Now()
Sheets("RO100").Range("A3").Value = "By"
Sheets("RO100").Range("A4").Value = Application.UserName
End Sub
Scusa se ne aprofitto ancora: mi sono accorto che l'utente inserito è lo stesso che compare come stringa nella finestra delle proprietà di "Risorse del Computer" sotto la voce: "Registrato a nome di:".
Siccome tutti i pc sono dell'azienda e come tali sono registrati, comparirebbe sempre la stessa stringa, ergo non si riuscirebbe ad identificare l'utente che ha editato per ultimo il file.
E' invece possibile, se non è troppo complicato, recuperare il nome dell'utente che ha effettuato il login a Windows?
Oppure usare qualche altro oggetto/proprietà, che non conosco?
@EDIT: mi spiegeresti il significato dei due parametri booleani passati alla Sub?
Cosa indicano?
Ciao zuper,
grazie funziona a meraviglia, ho fatto così:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheets("RO100").Range("A1").Value = "Last Modified"
Sheets("RO100").Range("A2").Value = Now()
Sheets("RO100").Range("A3").Value = "By"
Sheets("RO100").Range("A4").Value = Application.UserName
End Sub
Scusa se ne aprofitto ancora: mi sono accorto che l'utente inserito è lo stesso che compare come stringa nella finestra delle proprietà di "Risorse del Computer" sotto la voce: "Registrato a nome di:".
Siccome tutti i pc sono dell'azienda e come tali sono registrati, comparirebbe sempre la stessa stringa, ergo non si riuscirebbe ad identificare l'utente che ha editato per ultimo il file.
E' invece possibile, se non è troppo complicato, recuperare il nome dell'utente che ha effettuato il login a Windows?
Oppure usare qualche altro oggetto/proprietà, che non conosco?
@EDIT: mi spiegeresti il significato dei due parametri booleani passati alla Sub?
Cosa indicano?
no dovrebbe comparire quello che risulta da l'help about di excel :)
cmq:
Private Sub workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheets("Foglio1").Range("A1").Value = Now()
Sheets("Foglio1").Range("A2").Value = (Environ$("Username"))
End Sub
:)
i due parametri credo gli servano per poter distinguere se è un save o un save as...e dare la pox di cancellare il save :)
banryu79
18-12-2009, 13:45
no dovrebbe comparire quello che risulta da l'help about di excel :)
Sì, vero, ed è lo stesso valore che mi compare anche in proprietà di risorse del computer: sarà il valore di qualche chiave di registro di windows di cui ignoro il nome.
cmq:
Private Sub workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheets("Foglio1").Range("A1").Value = Now()
Sheets("Foglio1").Range("A2").Value = (Environ$("Username"))
End Sub
:)
Grazie mille :)
i due parametri credo gli servano per poter distinguere se è un save o un save as...e dare la pox di cancellare il save :)
Ok, grazie del chiarimento.
Sì, vero, ed è lo stesso valore che mi compare anche in proprietà di risorse del computer: sarà il valore di qualche chiave di registro di windows di cui ignoro il nome.
quello è il nome che di solito office chiede dopo la prima installazione...
i vostri pc saranno stati standardizzati e poi ghostati e l'hanno messa così :)
cmq sotto strumenti opzioni generale si può anche ovviare al problema ;)
banryu79
18-12-2009, 14:16
cmq sotto strumenti opzioni generale si può anche ovviare al problema ;)
Ah, grazie della dritta ho visto adesso.
Cmq meglio di no: può capitare che l'utente Luigi si sieda alla scrivania dell'utente Antonio: per poter usare Windows deve comunque loggarsi con il suo nome utente, ergo è meglio per me usare quello.
Se usassi quello associato alla applicazione installata mi ritroverei con un'informazione menzognera :D
Grazie del tuo prezioso aiuto, a buon rendere :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.