Macro autocoscienti (Microsoft Excel)
Per alcune macro potrebbe essere necessario determinare se esiste un modo per determinare la particolare macchina su cui sta operando la macro. Ad esempio, potresti avere un PC desktop che ha una directory particolare in D: \ OraNT \ Plus33, mentre il tuo PC notebook ha la directory in C: \ OraNT \ Plus33. La macro, ovviamente, deve rilevare quale macchina è in uso in modo che sappia quale directory utilizzare per la sua elaborazione.
Ci sono diversi modi in cui questo compito può essere affrontato. È possibile creare una macro di Excel che accede effettivamente all’API di Windows e determina il nome del computer su cui è in esecuzione. Tuttavia, un tale approccio può essere piuttosto complicato.
Un modo più semplice è utilizzare semplicemente il comando DIR di VBA per determinare dove esiste la directory desiderata. Il seguente farà il trucco:
Sub OracleQueries() Dim sTemp As String Dim sGoodPath As String sGoodPath = "D:\OraNT\Plus33\" sTemp = Dir("D:\OraNT\Plus33\nul") If sTemp = "" Then sGoodPath = "C:\OraNT\Plus33\" sTemp = Dir("C:\OraNT\Plus33\nul") End If 'Now have directory information If sTemp <> "" Then 'Process queries using sGoodPath Else MsgBox "Directories not found!" End If End Sub
Notare come la funzione DIR viene utilizzata in questo esempio. Normalmente DIR restituisce il nome del primo file che trova nella directory richiesta.
Se la directory è vuota, tuttavia, DIR restituisce una stringa vuota, anche se la directory esiste effettivamente. Poiché tutto ciò che vogliamo fare è scoprire se la directory esiste (non se ci sono file in essa), è necessario aggiungere le lettere “nul” alla fine del percorso della directory utilizzato da DIR.
Ciò fa sì che DIR restituisca una stringa vuota se la directory non si trova, oppure i caratteri “nul” se lo è (anche se la directory è vuota).
Verso la fine della macro, sTemp sarà vuoto se nessuna delle directory può essere localizzata. Se uno di essi è stato individuato, sTemp non sarà vuoto e sGoodPath verrà impostato sul nome della directory che può essere utilizzato in un’ulteriore elaborazione.
_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 (11576) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.
È possibile trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: Self-Aware Macros.