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.

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...