Livello tecnico: Conoscenza di base di Visual Basic for Applications Si applica a: Excel (2000/2002/2003/2007/2010/2013)
Dettagli
NOTA. Gli esempi ed il codice sono forniti *così come sono* e l’autore declina ogni responsabilità per un loro uso scorretto. Utilizzate gli esempi forniti o file di prova per i vostri test. La correzione delle eccezioni (errori) e il controllo del tipo di dati inserito è solo parziale. I file vogliono essere un semplice esempio che illustra come sia possibile automatizzare Excel e sono forniti solo a scopo dimostrativo.
Situazione.
Vogliamo conoscere quale versione di Excel è in uso su quella macchina e nel caso siano installate più versioni, quale sia quella attiva.
Questo codice, da copia/incollare in un modulo standard, restituisce la versione più recente installata sulla macchina o la versione di default:
Public Sub m_1()
Dim xlApp As New Excel.Application
Select Case Val(Mid(xlApp.Version, 1, _
InStr(1, xlApp.Version, ".") - 1))
Case 15
MsgBox "Excel 2013"
Case 14
MsgBox "Excel 2010"
Case 12
MsgBox "Excel 2007"
Case 11
MsgBox "Excel 2003"
Case 10
MsgBox "Excel 2002(XP)"
Case 9
MsgBox "Excel 2000"
End Select
Set xlApp = Nothing
End Sub
Questo codice, da copia/incollare in un modulo standard, restituisce la versione di Excel nella quale è contenuto il codice della macro e che nel caso di più versioni installate sulla stessa macchina, non sempre corrisponde alla versione di default:
Public Sub m_2()
Select Case Val(Mid(Application.Version, 1, _
InStr(1, Application.Version, ".") - 1))
Case 15
MsgBox "Excel 2013"
Case 14
MsgBox "Excel 2010"
Case 12
MsgBox "Excel 2007"
Case 11
MsgBox "Excel 2003"
Case 10
MsgBox "Excel 2002(XP)"
Case 9
MsgBox "Excel 2000"
End Select
End Sub
Questa funzione da copia/incollare in un modulo standard, restituisce il numero della versione attiva al momento della chiamata e può essere utilizzata anche in Excel lato celle:
Public Function f() As Long
With Application
f = Val(Mid(.Version, 1, _
InStr(1, .Version, ".") - 1))
End With
End Function
Figura 1: Esempio di utilizzo della funzione f() nella cella D1 di un foglio di Excel. La versione 15 di Excel è la 2013.
Figura 2: Esempio di chiamata della funzione f() da una Sub e relativa MsgBox con il risultato. La versione 15 di Excel è la 2013.
Link per chi è alle prime armi con il vb di Excel:
NOTA. Excel non dispone nativamente di procedure assolutamente sicure per impedire la visualizzazione e la modifica del codice vb e/o per la protezione dei fogli. E’ una cosa da tenere sempre presente quando si distribuiscono file con contenuti ritenuti delicati. Ricordate anche che è possibile lanciare il file di Excel senza che vengano eseguite le macro.
Risorse.
Avvio Pulito di Windows (courtesy of Microsoft MVP Franco Leuzzi)
Computer infettato da malware (courtesy of Microsoft MVP Vincenzo Di Russo)