Non posso sfruttare il metodo CopyFromRecordset di Excel perchè alcuni campi devono essere opportunamente formatati prima di inserirli nel Excel. Temo che non ci sia nulla da fare a riguardo...Originariamente inviato da gibra
Se la disposizione dei dati su foglio Excel non è in formato tabellare, mi sa che puoi fare poco per ottimizzare se copi ogni valore in ogni singola cella.
A parte che nel tuo codice non mi pare di aver visto alcun uso delle proprietà atte a velocizzare la procedura come: Application.Visible = False, Calculation, Interactive , DisplayAlerts , etc. (ma possono essermi sfuggite).
Se invece i dati vanno per la maggior parte copiati su Excel in formato tabellare, allora puoi provare ad usare ADODB (non credo che funzioni ADO.NET) e sfruttare il metodo CopyFromRecordset di Excel:
http://msdn.microsoft.com/en-us/library/aa165427(v=office.10).aspx
Sicuramente più veloce.
Comunque, anche dovendo disporre alcuni dati (non tutti) in celle predefinite, converrebbe ancora usare il metodo CopyFromRecordset, importando i dati in un altro foglio per poi aggiustarli nel foglio di destinazione.
![]()