Dave ha un sistema Windows XP che ha ancora una vecchia versione di Excel 97. Quel sistema ha una macro che viene utilizzata per elaborare le informazioni in un foglio di lavoro. È in grado di elaborare 500 righe di informazioni in circa 12 secondi. Su una macchina più recente, che esegue Excel 2010 con Windows 7, la stessa macro che opera sugli stessi dati richiede circa 3-4 minuti per essere eseguita. Entrambe le macchine hanno la stessa quantità di memoria (4 Gb) e processori comparabili. Dave si chiede perché la macro viene eseguita molto più lentamente sulla versione più recente di Excel.

È molto difficile fare altro che il più generale dei commenti senza effettivamente vedere il codice, ma ciò non significa che non ci sia nulla da dire. :>) La prima cosa che vorrai fare è controllare come la tua macro sta facendo il suo lavoro. Ad esempio, passa attraverso tutte le righe del foglio di lavoro per eseguire la sua elaborazione? (Anche se la macro sta elaborando 500 righe di informazioni non significa che non passi attraverso ogni riga del foglio di lavoro.) Il motivo per cui questo potrebbe essere critico è perché le versioni precedenti di Excel utilizzavano solo più di 65.000 righe in un foglio di lavoro, mentre le ultime versioni possono gestire un numero di righe 16 volte maggiore (oltre 1.000.000). Se l’esecuzione della macro richiedeva 12 secondi prima, 16 volte il tempo sarebbe 192 secondi, ovvero tra 3 e 4 minuti.

Ci sono anche rapporti che Excel 2010 comunica piuttosto regolarmente con il driver della stampante, in un modo non fatto nelle versioni precedenti di Excel. Puoi capire se questo sta rallentando la tua macro disattivando la comunicazione all’inizio della tua macro:

Application.PrintCommunication = False

Alla fine della macro, ricordarsi di reimpostare la proprietà su True in modo che Excel possa nuovamente comunicare con la stampante.

Potrebbe anche essere che ci sia qualcosa di diverso con la macchina più recente, anche se la differenza è sottile. Ad esempio, la macchina più recente potrebbe avere diversi programmi in background in esecuzione su quella vecchia, qualsiasi cosa, da un programma antivirus a un software di riconoscimento vocale. Inoltre, potrebbe essere caricato un diverso componente aggiuntivo di Excel che non si trova sul sistema precedente. Non penseresti che cose del genere influenzerebbero le prestazioni macro, ma potrebbero davvero. Non lo saprai, ovviamente, finché non rintracci cosa sta caricando, lo disabiliti e poi provi a eseguire di nuovo la tua macro.

Inoltre, potrebbe essere che la macchina più recente abbia alcuni dispositivi esterni di cui deve eseguire il polling periodicamente, il che potrebbe rallentare le cose. Ho un sistema nel mio ufficio che ha un disco rigido esterno, collegato tramite una porta USB. A volte, il sistema stesso (Windows) deve spegnersi e accendere l’unità esterna, e le cose essenzialmente si fermano sul computer mentre ciò accade. I dispositivi colpevoli potrebbero essere allegati USB, scanner, unità di rete, ecc. Può essere molto frustrante, soprattutto quando rallenta qualcosa che non dovrebbe richiedere molto tempo.

Un buon suggerimento in questo caso è di non fare affidamento esclusivamente su ciò che trovi con un singolo sistema Excel 2010. Se hai accesso a più macchine, forse anche alcune fuori ufficio, prova la macro su di esse per vedere cosa succede. Se funziona più velocemente, allora sai che c’è qualcosa di invisibile in gioco nel lento sistema 2010.

Se trovi che tutto è veramente “uguale”, potresti dover entrare nell’editor VB del sistema e iniziare a sincronizzare le varie parti della macro. Questo è noioso, ma può aiutarti a restringere dove, esattamente, la macro si sta impantanando.

Se decidi di seguire quest’ultima strada, troverai che vale la pena investire in un buon libro di riferimento per programmatori VBA di Excel. Ce ne sono diversi sul mercato, quindi guardati intorno un po ‘. (Non puoi sbagliare con qualcosa scritto da John Walkenbach, e ho sentito cose positive su Excel 2007 VBA Programmer’s Reference.)

_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 (12440) si applica a Microsoft Excel 2010.