Excel: macro VBA lente dopo aggiornamento Microsoft 365 2408 – cause, fix e rollback

Excel rallenta in modo drammatico dopo un recente aggiornamento di Microsoft 365? Molti team hanno visto macro VBA e file pesanti diventare fino a 100× più lenti, con blocchi in salvataggio e memoria che esplode. In questa guida pratica trovi cause probabili, rimedi immediati, rollback e consigli operativi per IT e power user.

Indice

Panoramica del problema

Dopo l’aggiornamento a Microsoft 365 Apps versione 2408 (build distribuita il 26 agosto 2024), numerosi utenti hanno osservato un netto peggioramento di Excel in scenari tipici d’ufficio e di analisi:

  • Esecuzione di macro VBA e gestione di file di grandi dimensioni 10 – 100 volte più lenta.
  • Chiusura e salvataggio delle cartelle che impiegano decine di secondi o che si bloccano.
  • Uso di memoria che cresce fino a diversi GB e non viene rilasciato (sintomi di memory‑leak).
  • Excel che resta “in attesa” del processo splwow64.exe, sintomo di interferenze con il sottosistema di stampa.
  • Rallentamento progressivo macro dopo macro, fino al crash dell’applicazione.

Gli stessi file e le stesse macro risultano invece normali su PC rimasti alla versione 2407 o precedenti, il che ha permesso di circoscrivere l’anomalia al ramo d’aggiornamento più recente.

Chi è interessato

Il problema impatta soprattutto ambienti Windows (10 e 11), installazioni Microsoft 365 a canale corrente o equivalenti, e file Excel con una o più delle seguenti caratteristiche:

  • Macro VBA che scrivono/leggono grandi Range o array (operazioni .Value su aree estese, loop intensivi).
  • Uso di grafici, tabelle pivot e formattazione condizionale a larga scala.
  • Interazione con stampanti di rete o driver complessi, anche in assenza di stampa attiva.
  • Add‑in COM o caricamenti personalizzati che agganciano eventi di Workbook/Worksheet.

Come riconoscerlo subito

  1. Controlla la build di Excel: File > Account > Informazioni su Excel. Se è indicata una build della famiglia 2408, sei potenzialmente coinvolto. Se vedi una build correttiva ≥ 16.0.17928.20156, verifica comunque le prestazioni con un test rapido.
  2. Apri Gestione attività mentre esegui una macro pesante: osserva Excel.exe e, se presente, splwow64.exe. Se splwow64.exe resta attivo senza motivo apparente e la memoria di Excel cresce senza rilasciarsi al termine, molto probabilmente stai colpendo l’anomalia.
  3. Confronta con un PC “di controllo” ancora su 2407 o precedente: se lo stesso file è fluido lì, il problema è legato alla build.

Sintomi approfonditi e segnali diagnostici

  • Tempo di scrittura su celle che passa da pochi secondi a minuti quando si assegnano grandi blocchi (Range.Value = VariantArray).
  • Salvataggi e chiusure che restano in “Non risponde” e si sbloccano solo dopo molti secondi.
  • Memoria allocata che continua a crescere macro dopo macro; GC apparente inefficace fino alla chiusura dell’app.
  • Dipendenza dal sottosistema di stampa: Excel sembra attendere splwow64.exe, anche senza inviare stampe. Questo fa pensare a una regressione nella pipeline di layout, anteprima o interrogazione della stampante predefinita.

Ipotesi tecnica

Gli indizi puntano a un’interazione non ottimale tra il nuovo motore di Excel, la gestione della formattazione/impaginazione e il Windows Print Spooler mediato da splwow64.exe. In specifiche condizioni (driver di stampa, add‑in, dimensione fogli), Excel finisce per attendere operazioni di layout o di interrogazione della stampante, amplificando i tempi di macro e salvataggi. In parallelo, alcune code‑path mostrano memory retention anomala, con rilascio tardivo o nullo finché non si riavvia Excel.

Non è necessario stampare affinché l’anomalia si manifesti: in molte installazioni, Excel esegue comunque chiamate di layout “pronte alla stampa”, motivo per cui cambiare stampante predefinita talvolta riduce il problema ma non lo elimina.

Soluzioni e workaround emersi

Di seguito una matrice decisionale aggiornata con le opzioni più efficaci. Scegli in base a contesto, urgenza e vincoli di sicurezza.

OpzioneProcedura sinteticaVantaggiLimiti/Rischi
Aggiornare a 2408 build 16.0.17928.20156 (o superiore)File > Account > Opzioni di aggiornamento > Aggiorna oraPatch ufficiale Microsoft che ripristina la velocità per molti utentiDistribuzione graduale; non tutti i canali l’hanno già ricevuta
Rollback a 2407 build 16.0.17830.201661. Disattiva gli aggiornamenti.
2. Prompt amministratore:
cd %programfiles%\Common Files\Microsoft Shared\ClickToRun
officec2rclient.exe /update user updatetoversion=16.0.17830.20166
Prestazioni ripristinate subitoPerdita di correzioni di sicurezza; occorre bloccare gli update finché il fix non è stabile
Versione anteprima 18.2409.1051.0Attiva il canale Insider/Preview dall’account Microsoft 365 e aggiornaInclude fix e hot‑fix più recentiSoftware beta, possibile instabilità
Percorso attendibile (Trust Center)Definisci un “Percorso fidato” e sposta lì il fileRisolve il lag in alcune installazioniNon elimina il memory‑leak; efficace solo in scenari limitati
Usare un PC/Terminal Server non aggiornato a 2408Continua su macchine ferme a 2406/2407Continuità operativa senza interventi softwareSoluzione tampone e non scalabile

Guida pratica alle opzioni

Aggiornare alla build correttiva

Per le postazioni che possono ricevere subito la build correttiva (o una successiva), procedi così:

  1. Apri File > Account.
  2. Seleziona Opzioni di aggiornamento e scegli Aggiorna ora.
  3. Al termine, verifica in Informazioni su Excel che la build sia ≥ 16.0.17928.20156.
  4. Esegui i test indicati in questa guida (macro di benchmark, salvataggi ripetuti, monitor memoria).

Nota: la disponibilità dipende dal tuo canale (Corrente, Enterprise Mensile, Semi‑Annual, Insider). In aziende strutturate, la build può essere “tenuta” dal management o dall’Admin Center fino al via libera interno.

Eseguire un rollback stabile

Se la build correttiva non è ancora arrivata o non risolve nel tuo scenario, il rollback alla famiglia precedente ha dato i risultati più immediati.

  1. Chiudi tutte le app Office.
  2. Disattiva gli aggiornamenti da File > Account.
  3. Apri un Prompt dei comandi come amministratore e lancia:
cd "%ProgramFiles%\Common Files\Microsoft Shared\ClickToRun"
officec2rclient.exe /update user updatetoversion=16.0.17830.20166

Dopo il rollback, verifica versioni e blocca gli aggiornamenti finché il fix non è ampiamente validato nel tuo ambiente. Pianifica in anticipo il rientro al ramo stabile.

Valutare l’anteprima

Abilitare un canale Insider/Preview può offrire una build con hot‑fix ulteriori (es. 18.2409.1051.0). È una scelta da riservare a un anello pilota e a postazioni non critiche.

Usare un percorso attendibile

L’abilitazione di un Trusted Location nel Centro protezione può ridurre drasticamente lag e attese in parte degli scenari:

  1. Vai su File > Opzioni > Centro protezione > Impostazioni Centro protezione > Percorsi attendibili.
  2. Aggiungi una cartella locale o di rete e sposta lì i file macro‑intensivi.

Pro: intervento rapido, nessun cambio di versione. Contro: non incide sul memory‑leak sottostante e non risolve tutti i casi.

Continuare su macchine non aggiornate

Dove possibile, mantieni un perimetro di continuità su PC o server RDS/VDI fermi a versioni pre‑2408 (2406/2407). È il modo più veloce per evitare interruzioni mentre stabilizzi il parco macchine.

Raccomandazioni operative

  1. Verifica e installa la build correttiva (≥ 16.0.17928.20156), quindi testa le macro critiche.
  2. Fallback immediato: se il fix non è disponibile o non risolve, esegui il rollback a 2407 e disattiva gli aggiornamenti automatici temporaneamente.
  3. Canale ufficiale: in ambito aziendale, apri un ticket dal Microsoft 365 Admin Center per ricevere le comunicazioni di rilascio e coordinate di distribuzione.
  4. Monitoraggio della memoria: durante l’emergenza, osserva il consumo; se Excel raggiunge soglie critiche, salva subito e riavvia per prevenire crash.
  5. Percorsi attendibili: sposta i file macro‑intensivi in cartelle fidate per mitigare il lag in alcune configurazioni.
  6. Ripristina l’igiene di sicurezza: appena il fix stabile è in produzione per il tuo canale, riattiva gli aggiornamenti.

Playbook per team IT

Triaging e contenimento

  • Taglia il rumore: mappa le versioni installate e separa i casi confermati 2408 da problemi non correlati (add‑in, rete, antivirus).
  • Anello pilota: crea un gruppo di test con utenti esperti per validare la build correttiva su file reali.
  • Perimetro di continuità: tieni disponibili VM/VDI o RDS su 2407 per i team critici.

Governance degli aggiornamenti

  • Office Deployment Tool (ODT): usa un file di configurazione per fissare TargetVersion e Channel finché non approvi il fix.
<Configuration>
  <Add OfficeClientEdition="64" Channel="Current" Version="16.0.17830.20166">
    <Product ID="O365ProPlusRetail">
      <Language ID="it-it"/>
    </Product>
  </Add>
  <Updates Enabled="TRUE" TargetVersion="16.0.17830.20166"/>
  <Display Level="None"/>
</Configuration>

Esegui con:

setup.exe /configure config.xml

Quando approvi la build correttiva, aggiorna Version o rimuovi TargetVersion per tornare al flusso normale.

Verifiche post‑intervento

  • Benchmark ripetibili: usa le macro di test in questa guida per misurare prima/dopo.
  • Salvataggi su rete e locale: verifica entrambi, per escludere la componente I/O.
  • Cartelle attendibili: prova con e senza Trusted Locations per isolare il beneficio.

Diagnostica rapida

Controllo add‑in

  1. Avvia Excel in modalità provvisoria: Win+R > excel /safe.
  2. Se il problema sparisce, riabilita gli add‑in uno alla volta da File > Opzioni > Componenti aggiuntivi.

Stampante predefinita e spooler

  • Imposta temporaneamente Microsoft Print to PDF come stampante predefinita e riprova la macro.
  • Se vedi splwow64.exe bloccato, termina il processo come test (non come soluzione):
taskkill /IM splwow64.exe /F

Avvertenza: l’operazione interrompe sessioni di stampa in corso; usala solo per isolare la causa.

Impostazioni di Excel utili alla diagnosi

  • Calcolo su Manuale durante i test complessi.
  • ScreenUpdating disattivato nelle macro di prova.
  • Eventi e EnableAnimations disattivati per misurazioni pulite.

Macro di benchmark e stress test

Le seguenti macro servono a misurare differenze tra build, riducendo l’influenza di calcolo, grafici e I/O. Esegui su un foglio vuoto, salva, chiudi e riapri tra i test per azzerare lo stato di memoria.

Scrittura massiva su celle

Option Explicit

Public Sub Benchmark_ScritturaMatrice()
Dim n As Long, arr() As Variant, t As Double
n = 250000                   ' righe da scrivere: regola in base al PC
ReDim arr(1 To n, 1 To 1)
Dim i As Long
For i = 1 To n
arr(i, 1) = i
Next i
```
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

t = Timer
With ActiveSheet
    .Range("A1").Resize(n, 1).Value = arr
End With
Debug.Print "Scrittura matrice:", Format(Timer - t, "0.00") & " s"

Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
```
End Sub 

Lettura massiva

Public Sub Benchmark_LetturaMatrice()
    Dim t As Double, data As Variant
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    t = Timer
    data = ActiveSheet.Range("A1").CurrentRegion.Value
    Debug.Print "Lettura matrice:", Format(Timer - t, "0.00") & " s, celle: "; UBound(data, 1) * UBound(data, 2)
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

Test salvataggio ripetuto

Public Sub Benchmark_Salvataggi()
    Dim i As Long, t As Double, tTot As Double
    For i = 1 To 5
        t = Timer
        ThisWorkbook.Save
        Debug.Print "Salvataggio " & i & ":", Format(Timer - t, "0.00") & " s"
        DoEvents
        Application.Wait Now + TimeValue("0:00:02")
        tTot = tTot + (Timer - t)
    Next i
    Debug.Print "Tempo medio:", Format(tTot / 5, "0.00") & " s"
End Sub

Interpretazione: se su 2407 i tempi sono stabili (es. 2‑4 s) e su 2408 degradano progressivamente o si moltiplicano, il caso è allineato alla regressione descritta.

Buone pratiche per file macro‑intensivi

  • Blocchi di scrittura: preferisci assegnamenti di array a blocchi di celle invece di loop cella‑per‑cella.
  • Schermata e calcolo: usa ScreenUpdating = False, Calculation = Manual, EnableEvents = False nei tratti critici; ripristina sempre gli stati in Finally.
  • Riduci le query del layout: evita Page Break Preview, anteprime e passaggi automatici verso la stampa durante i test.
  • Pulisci oggetti: setta a Nothing gli oggetti COM e rilascia risorse non più usate.

Checklist di stabilità

  • Conferma versione/build di Office su ogni macchina impattata.
  • Verifica presenza della build correttiva; altrimenti applica rollback controllato.
  • Monitora memoria di Excel durante sessioni lunghe; riavvia oltre soglia.
  • Isola impatto stampante: cambia stampante predefinita e riprova.
  • Valida in cartella attendibile per ridurre overhead di sicurezza.
  • Documenta tempi prima/dopo con i benchmark proposti.

Domande frequenti

Il problema riguarda anche file senza macro?
Sì, alcuni utenti riferiscono lentezza anche su file pesanti senza macro, specie con molte formule o tabelle pivot. La correlazione più forte rimane con macro e operazioni massicce di I/O su celle.

Serve davvero cambiare stampante predefinita?
Non è una cura, ma un test diagnostico. Se passando a una stampante virtuale il problema si attenua, è probabile l’intersezione con il sottosistema di stampa. Resta consigliato aggiornare alla build correttiva o eseguire il rollback.

È rischioso il rollback?
Sì, perché ti priva delle patch di sicurezza rilasciate dopo la versione scelta. Va limitato a postazioni controllate e per il minor tempo possibile. Pianifica e monitora.

Gli add‑in possono peggiorare la situazione?
Sì. Alcuni add‑in COM o di terze parti che intercettano eventi di Excel possono amplificare il degrado. Testa sempre in excel /safe.

Nota di sicurezza

Il downgrade a versioni precedenti espone a patch mancanti. Applicalo solo su postazioni controllate o isolate e pianifica il ritorno al canale stabile non appena la correzione è confermata e diffusa per il tuo canale.

Procedura di comunicazione agli utenti

Oggetto: Prestazioni Excel ridotte dopo aggiornamento – indicazioni operative

Stiamo gestendo un’anomalia che rallenta macro e salvataggi su alcune build di Microsoft 365. Se noti Excel lento: 1) salva, chiudi e riapri; 2) evita l’anteprima di stampa; 3) contatta IT indicando versione e file interessati. Stiamo distribuendo una build correttiva/rollback sulle postazioni coinvolte.

Procedura rapida di emergenza

  • Salva immediatamente il lavoro aperto.
  • Chiudi Excel e riaprilo per liberare memoria.
  • Esegui le macro in una cartella definita come attendibile.
  • Se devi consegnare entro tempi stretti, usa una postazione 2407 o un server RDS/VDI non aggiornato.
  • Allinea quanto prima la postazione alla build correttiva o applica il rollback controllato.

Conclusioni

La riduzione di performance osservata su Excel dopo l’aggiornamento alla famiglia 2408 non è un semplice “rallentamento”: ha impatti diretti su produttività, processi batch e operazioni d’ufficio quotidiane. Fortunatamente, la combinazione di build correttive, rollback mirati e semplici accorgimenti (cartelle attendibili, monitor memoria, isolamento del sottosistema di stampa) consente di riportare gran parte degli ambienti a una condizione stabile. La strategia vincente è pragmatica: contenere subito il danno, testare con benchmark ripetibili, distribuire la correzione in modo controllato e ripristinare gli aggiornamenti di sicurezza appena possibile.


Riferimento rapido

  • Build correttiva consigliata: ≥ 16.0.17928.20156.
  • Rollback funzionante: 16.0.17830.20166 (famiglia 2407).
  • Segnali chiave: macro che degradano nel tempo, salvataggi lenti, splwow64.exe attivo senza stampa, memoria di Excel che cresce e non scende.
  • Mitigazioni: cartelle attendibili, cambio stampante predefinita come test, esecuzione in excel /safe, uso temporaneo di PC/VDI pre‑2408.

Checklist finale per amministratori

  1. Mappa le build in uso e identifica i gruppi impattati.
  2. Abilita un ring pilota per provare la build correttiva.
  3. Se necessario, consolida il rollback a 2407 con ODT e blocco aggiornamenti.
  4. Pubblica benchmark standardizzati e soglie di allerta memoria.
  5. Conferma stabilità, poi riattiva gli aggiornamenti e chiudi l’incidente.
Indice