[Chiuso] file di grosse dimensioni pronto per l'uso.

Stato
Chiusa ad ulteriori risposte.

dodo47

Utente senior
Expert
18 Ottobre 2020
5.071
1.168
245
excel 2016
ciao
per un test, prova a mettere: application.enableevents=false ad inizio della Open e, .....=true, prima della end sub della open e vedi che succede

saluti
 

ezio68

Utente abituale
Original poster
12 Marzo 2023
444
16
18
57
Siracusa
2021
ciao Domenico, grazie ma non succede nulla : sempre lo stesso tempo d'attesa. Comunque a questo punto credo si tratti della configurazione hardware del pc (ram, clock della cpu, scheda video indipendente . . .) ; oggi pomeriggio farò una prova ad aprire il file dal mio pc di casa che è abbastanza performante . . . potevo farlo prima ma ci ho pensato solo adesso e vi farò sapere :unsure:
 

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
78.155
8.529
2.445
72
Napoli
Office 365
Sul mio pc (i7 32 giga di ram) senza far nulla il file è, ad occhio e croce, "ready" in non più di 3/4 secondi
 
Ultima modifica:

Powerwin

VBA Expert
Supermoderatore
17 Marzo 2016
23.352
4.228
1.845
vicino a Milano
Office 365
Ciao a tutti, fatto la prova anche sul mio notebook (dopo aver attivato gli ActiveX) e finisce tutto in meno di 3 secondi

AMD Ryzen 9 5900HX - 32GB Ram
 

Powerwin

VBA Expert
Supermoderatore
17 Marzo 2016
23.352
4.228
1.845
vicino a Milano
Office 365
Visto che il problema non ha una vera e propria soluzione
Veramente il problema non era la velocità di disponibilità del file, ma di un avviso che evidenziasse la disponibilità, cosa che mi pare sia stata risolta con l'intervento di Marius44 @Marius44 (Ciao)

Non mi sembra tu abbia detto nulla circa il post # 17. Hai provato?
La soluzione proposta era in base alla richiesta iniziale
 

ezio68

Utente abituale
Original poster
12 Marzo 2023
444
16
18
57
Siracusa
2021
Veramente il problema non era la velocità di disponibilità del file, ma di un avviso che evidenziasse la disponibilità, cosa che mi pare sia stata risolta con l'intervento di .avatar--xss { width: 21px; height: 21px; line-height: 21px !important; margin-right: 2px; } Marius44 @Marius44 @Marius44 (Ciao)
No Flavio, il ready lo avevo messo per testare se dopo l’attivazione del foglio il file era già operativo. Se vai all’inizio del post ho scritto qualcosa del genere.
 

Bruno

Excel/VBA Expert
Staff
13 Settembre 2015
4.760
1.718
245
Italy
365/64 Bit W10
Ciao

Il file originale si apre in una decina di secondi direi troppo!
Ho fatto alcune prove rimuovendo gli oggetti e pulsanti ed in effetti il tempo si riduce sul mio Pc W10 Excel 365 Beta 64 Bit

Una ricerca su Ai sui rallentamenti..

1. 🐢 Apertura del file


Ogni controllo ActiveX viene inizializzato dal motore OLE di Windows all'apertura. Con decine/centinaia di oggetti Excel deve:


  • Caricare la libreria MSForms.dll per ogni istanza
  • Registrare ogni oggetto nel registro OLE
  • Allocare memoria separata per ciascuno

Con 50+ oggetti su più fogli l'apertura può rallentare di secondi o decine di secondi.




2. 🔄 Cambio foglio


Ogni volta che si naviga su un foglio con ActiveX, Excel:


  • Ridisegna tutti i controlli
  • Riattiva il motore VBA per ciascuno
  • Riesegue gli eventi _Initialize associati

Questo causa un freeze visibile durante il cambio scheda.




3. 💾 Dimensione del file


Ogni CommandButton ActiveX memorizza nel file:


  • Il binario del controllo OLE
  • Le proprietà (colori, font, caption, ecc.)
  • Il codice VBA associato

Un singolo pulsante può pesare 5–20 KB. Con 100 pulsanti → +1–2 MB di overhead.




4. 🧮 Calcolo/Refresh


Se il foglio ha Application.Calculation = xlAutomatic, Excel può tentare di rivalutare le celle con =INCORPORA(...) ad ogni modifica, appesantendo ulteriormente il ciclo di calcolo.




5. 🔒 Instabilità e crash


I controlli ActiveX su Excel sono notoriamente instabili, specialmente su:


  • File condivisi o su rete
  • Excel 32-bit con molti oggetti (limite memoria ~2GB)
  • Aggiornamenti di Windows/Office che rompono la registrazione OLE



Soluzione consigliata:


SituazioneAlternativa
Pulsanti solo per eseguire macro✅ Usa Form Controls (più leggeri, nessun OLE)
Serve interfaccia avanzata✅ Usa una UserForm unica invece di tanti ActiveX sparsi
Navigazione tra fogli✅ Usa una barra di navigazione su un solo foglio

💡 I Form Controls (msoFormControl) sono fino a 10x più leggeri degli ActiveX perché non usano il motore OLE e non hanno overhead di inizializzazione.
 

Terio

Excel/Vba Expert
Supermoderatore
6 Gennaio 2021
27.933
6.123
2.345
55
Arce
2016, 2019, 365
ezio68 @ezio68 , capisco che avevi manifestato l'intenzione, ma per dei chiarimenti è stata riaperta.
Dovresti dare conferma se deve essere chiusa definitivamente o decidere se continuare, visto che ne hai aperta già un'altra per un tema diverso.

Grazie per la collaborazione.
 
Stato
Chiusa ad ulteriori risposte.