Parlare di VBA (Visual Basic for Applications) nel 2024 non è anacronistico? Per alcuni potrebbe sembrare di sì, ma la realtà dei fatti ci restituisce uno scenario che sembra ancora saldamente radicato al passato.
Proprio nelle ultime settimane, infatti, ci hanno raggiunto diverse imprese che – nonostante abbiano dimensioni davvero ragguardevoli – continuano ad avvalersi di VBA nei loro progetti e nei rispettivi flussi di lavoro.
Pensate addirittura che in un’organizzazione gli ingegneri software hanno scelto di utilizzare fogli elettronici per controllare un’infrastruttura costata, nel corso di anni, cifre astronomiche. L’azienda in questione ci ha mostrato un foglio elettronico con almeno 250 fogli separati, il cui funzionamento risulta orchestrato mediante l’utilizzo di macro realizzate in VBA. Sì, proprio quei contenuti che Microsoft ha deciso di bloccare, almeno in via ufficiale già da qualche anno (ovviamente per i file provenienti dalla rete Internet, quindi da fonti potenzialmente insicure).
Cos’è VBA e a cosa serve
Molte aziende utilizzano i programmi della suite Microsoft Office nella loro routine lavorativa di ogni giorno. VBA è un linguaggio di programmazione sviluppato da Microsoft che è parte integrante di Office e che può essere usato per personalizzare e automatizzare processi all’interno di questi programmi. È una soluzione comunemente sfruttata in passato (e incredibilmente ancora oggi in svariati contesti) per svolgere in automatico compiti ripetitivi e sviluppare funzionalità personalizzate all’interno dei documenti usati nei flussi di lavoro.
Quando si parla di automazione, le aziende possono accedere oggi a un ampio ventaglio di tecnologie, sia on-premises che sul cloud. Perché, allora, tante realtà continuano a fare affidamento su VBA, il cui supporto ufficiale Microsoft terminerà a giugno 2024?
Perché in azienda si continua a usare VBA sebbene il linguaggio sia ritirato da giugno 2024
Nella maggior parte dei casi, quando si cerca di andare un po’ più in profondità, gli interessati rispondono che il dipartimento IT della loro azienda impedisce loro l’utilizzo di altre soluzioni più avanzate, così si ripiega proprio su VBA. Oppure, si fa presente che VBA è l’unico linguaggio conosciuto per automatizzare delle routine.
Prendiamo una soluzione evoluta come Power BI, anch’essa della “scuderia” Microsoft: non può essere usata per l’automazione dei processi, mentre VBA sì. Gli utenti che utilizzano Power BI per accedere ai vari set di dati spesso generano file CSV, poi memorizzati, condivisi ed elaborati anche sul cloud. Ma cosa genera questi CSV in molti casi? Proprio VBA.
Tanti responsabili di progetto raccontano di vedersi bocciare la possibilità di installare linguaggi di programmazione di alto livello come Python, Ruby, Node e Rust, generalmente per questioni di sicurezza. Così, tanti utenti restano ancora oggi legati a doppio filo con Powershell v3 e VBA.
Perché VBA è così temuto?
Allo stesso tempo, sebbene VBA sia ancora largamente utilizzato in tante aziende, perché il suo utilizzo è così temuto? Quali solo le motivazioni di questa nomea?
Innanzi tutto, come abbiamo accennato in precedenza, molti utenti ricorrono a VBA perché dichiarano di non avere a disposizione alternative migliori. Molte organizzazioni basano i propri processi aziendali ancora su Excel e quando è richiesta un’automazione di qualche tipo, anche minimale, VBA è spesso la prima scelta.
La maggior parte degli utenti VBA è formata da autodidatti: questo significa che quando sviluppano codice e realizzano macro, spesso manca il rispetto delle migliori pratiche di programmazione. L’assenza di una formazione strutturata porta a codice scritto in modo poco chiaro e alla produzione di routine inefficienti.
Esaminando il sorgente VBA di alcuni progetti realizzati in Excel e portati in nostra visione, ci siamo trovati dinanzi a una carrellata di “orrori” certamente non di poco conto: cicli for
impegnativi, continui accessi al contenuto delle celle (in luogo dell’utilizzo degli array), richiami frequenti e inutili ai metodi Protect
e Unprotect
, uso di codice ridondante e molto altro ancora. Tutte prassi che affossano le prestazioni e possono ingenerare altri problemi.
Il registratore di macro, così amato dagli utenti che hanno poca dimestichezza con il codice, spesso confeziona istruzioni non ottimizzate e può portare all’introduzione di bug di varia natura.
I principali benefici di VBA
Di seguito elenchiamo, in ordine sparso, alcuni vantaggi di VBA. Alcuni di essi, per le ragioni che andremo ad esaminare più avanti, potrebbero in realtà essere considerati come gravi svantaggi, soprattutto nei contesti in cui la sicurezza deve essere al primo posto:
- Disponibilità universale: VBA è presente su ogni computer dotato di Microsoft Office ed è supportato anche nelle suite alternative, commerciali e libere/open source.
- Accesso al file system: a differenza di OfficeJS / OfficeScript, VBA può accedere al file system locale, facilitando l’interazione con i file memorizzati nel dispositivo.
- API di Excel intuitive: le API richiamabili tramite VBA semplificano lo sviluppo di script e macro per l’automazione di operazioni sui fogli elettronici.
- Accesso a qualsiasi libreria registrata: VBA è in grado di fare riferimento a qualsiasi altra libreria registrata sul sistema in uso. In questo modo è possibile estendere le funzionalità di automazione attraverso l’utilizzo di risorse esterne.
- Utilizzo delle API native di Windows: VBA può utilizzare le API del sistema operativo Windows, consentendo l’automazione di operazioni che coinvolgono finestre e altre funzionalità del sistema operativo.
- Interoperabilità con altri linguaggi: essendo basato sul concetto di COM, gli oggetti VBA possono essere utilizzati anche da altri linguaggi di programmazione. COM, acronimo di Component Object Model, è un framework sviluppato da Microsoft per consentire la comunicazione e la collaborazione tra software e componenti all’interno del suo sistema operativo.
- Iniezione ed esecuzione di codice macchina: VBA ha la capacità di iniettare codice macchina in memoria ed eseguirlo, consentendo operazioni avanzate.
Proprio per via di alcune delle caratteristiche di VBA e della possibilità di servirsene direttamente tramite macro, Microsoft ha progressivamente deciso di accantonare il supporto per questo linguaggio.
Come verificare la presenza di macro in Excel e nei documenti Office
Sia in Microsoft Excel che negli altri componenti della suite, per verificare l’eventuale presenza di macro e quindi di codice VBA, è sufficiente fare clic sul menu Visualizza quindi sul pulsante Macro della barra degli strumenti e infine su Visualizza macro.
Nelle applicazioni come LibreOffice e OpenOffice, basta accedere al menu Strumenti, Macro, Visualizza macro quindi fare riferimento al contenuto della colonna posta sulla sinistra.
Per abbandonare davvero VBA è necessaria la collaborazione tra i team aziendali
Abbiamo detto che VBA è temuto a causa di una combinazione di fattori, tra cui la sua natura obsoleta, la scarsa qualità dei progetti esistenti, la mancanza di supporto e aggiornamenti da parte di Microsoft, la generale mancanza di competenze e conoscenze (a parte casi particolari) tra gli utenti che utilizzano il linguaggio senza una preventiva approfondita attività di formazione.
Sebbene nel 2024 VBA rivesta quindi un ruolo importante in molte organizzazioni, c’è una crescente consapevolezza della necessità di migrare a tecnologie più moderne, supportate e universalmente apprezzate.
Questa cruciale fase di passaggio, tuttavia, impone la fattiva collaborazione tra i team aziendali: non può esserci una “visione strategica” imposta dai responsabili di alcuni dipartimenti a svantaggio di altri.
Massima attenzione sui documenti contenenti macro provenienti da terze parti
Per impostazione predefinita, Microsoft blocca l’esecuzione delle macro eventualmente presenti in documenti provenienti da host remoti. Il meccanismo si attiva automaticamente perché tutti i file scaricati dalla rete Internet (ad esempio dal Web o tramite email, sotto forma di allegati), contengono il cosiddetto Mark-of-the-Web (MotW) o Zone Identifier. Si tratta di un marcatore che contraddistingue i file non creati in locale.
Le macro possono contenere codice potenzialmente molto pericoloso: è quindi sempre bene evitarne il caricamento se la provenienza è esterna alla propria organizzazione. Tra l’altro, il caricamento delle macro con la rimozione del Mark-of-the-Web è una delle tendenze verso le quali guardano con maggiore interesse i criminali informatici. Alcuni documenti possono superare la Visualizzazione protetta di Office, scavalcando il controllo del Mark-of-the-Web.
Nello specifico, Microsoft blocca tutte le macro quando la casella Annulla blocco nelle proprietà del singolo documento (foglio elettronico, file Word o presentazione che sia…) risulta disattivata.
Nel caso ad esempio di LibreOffice, è possibile modificare le preferenze circa l’esecuzione delle macro portandosi nel menu Strumenti, Opzioni, cliccando su Sicurezza e infine sul pulsante Sicurezza delle macro.
La finestra Sicurezza delle macro consente di impostare dei criteri personalizzati per l’eventuale esecuzione delle macro. Le macro firmate si riferiscono a macro VBA firmate digitalmente con un certificato valido.
Quando una macro VBA è firmata digitalmente, significa che un’autorità di certificazione ha verificato l’identità del firmatario e ha emesso un certificato digitale attestante che la macro è stata creata o approvata da quella fonte verificata. Le macro firmate possono offrire un livello aggiuntivo di sicurezza e di fiducia.
Le domande da farsi prima di eseguire il codice VBA contenuto in un documento
Ciononostante, è sempre bene porsi alcune domande prima di autorizzare l’esecuzione di una macro:
- Da dove proviene il file?
- Tutte le funzionalità incluse nel documento sono fruibili anche senza il caricamento delle macro?
- Uno sconosciuto sta cercando di invitarci all’esecuzione delle macro?
- C’è un messaggio pressante che invita ad attivare le macro ed eseguirne il contenuto?
- Qual è il contenuto delle macro presenti nel file? In caso di dubbi sul funzionamento del codice, si può anche chiedere aiuto a strumenti come ChatGPT o Phind, che possono offrire valide indicazioni per la comprensione di qualunque tipo di routine.
Ecco, in tutti questi casi bisognerebbe stare sempre alla larga dall’esecuzione delle macro.
Credit immagine in apertura: iStock.com – skynesher