E' una semplice curiosità perchè ormai ho risolto il problema armandomi di santa pazienza e ricostruendolo. Fa parte di una cartella di circa 5MB con una decina di fogli in funzione da mesi: codice VBA, formule, formattazioni, collegamenti ipertestuali, nessun intoppo. Ho ripulito un pò di copypaste con dei pastespecial dove è stato possibile, rimosso formattazioni condizionali ma è rimasto pressochè lo stesso e continuava a funzionare. Ho deciso di far aggiungere la data dell'ultimo salvataggio nella macro Private Sub Workbook_BeforeClose(Cancel As Boolean), una riga in tutto:
Sheets("Foglio1").Range("a1").Value = Format(Now, "dd/mmm/yyyy hh:mm")
Da allora non funziona più niente. O meglio, funziona ma impiega decine di minuti ad aprirsi, a chiudersi, ad eseguire le macro. Ho provato di tutto finche ho individuato la causa in uno dei fogli e rimuovendolo il rallentamento è scomparso. Ma ovviamente dovevo ripristinarlo. Ho tentato con il copia incolla, con il pastespecial sia a mano che con il codice, solo valori, rimosso formattazioni condizionali, formule, sfondi. Passo dopo passo ho tolto tutto ed è rimasto un foglio vuoto; l'ultimo step è stato il seleziona tutto + cancella tutto. Diciamo che si è corrotto, ma mi incuriosisce sapere cosa contiene visto che continua a pesare 5MB come tutto il programma. Aggiungo che tutto il file ora pesa 1,8MB e non più 5, quindi senza saperlo mi sono tirato dietro per mesi un fardello inutile anche se non dava problemi. Venendo al sodo e curiosità a parte: ricostruire un foglio significa un sacco di lavoro perchè se lo copio mi porto dietro anche il blob. Inoltre si rinumerano tutti gli oggetti, dai pulsanti ai menu a discesa, forme ecc e non mi pare che si possa assegnar loro una numerazione ma si deve prendere quella proposta da Excel e ovviamente adeguare tutto il codice ai nuovi riferimenti. A qualcuno è successo? Come ci si comporta in questi casi, ci sono strumenti più rapidi che ricreare tutto da zero? Non mi riferisco alla ricostruzione del foglio, ma all'individuare il maligno che vi si annida. Ora è tornato a funzionare ma il dubbio mi è rimasto: cosa c'è dentro a quel foglio apparentemente vuoto? Esiste un modo per fare un debug e sapere cosa sta facendo il programma in quelle decine di minuti prima di ogni operazione? Segnalo che l'ultima operazione prima della chiusura è l'inserimento della data, e quella si aggiorna immediatamente. Ho anche reinstallato Excel ma senza risultati perchè il problema era solo ed esclusivamente in quel foglio del file (Excel 2016 con l'ultimo aggiornamento di una settimana fa)