Prova a mettere le dichiarazioni
all'interno della Sub TestDataSet.codice:Dim xlApp As Excel.Application Dim xlWB As Excel.Workbook Dim xlWS As Excel.Worksheet
Forse istanziando in modo ritardato fa qualche casino con i riferimenti in memoria, e al momento dell'impostazione a Nothing non riesce a risolvere l'assegnazione.
Secondo me lo stesso discorso vale per il passaggio "secco" dei parametri (attraverso l'assegnazione a variabili rientriamo nel discorso di cui sopra per via dei puntatori alle locazioni delle variabili).
Oppure + semplicemente ti resta attivo qualche oggetto collegato ai vari Application, WorkBook, WorkSheet ecc. ecc. (anche se non mi pare)
Visto cosi' il codice che hai postato va + che bene.
Hai provato anche con:
codice:xlWS.Range("A1", "D" & Cstr(riga + 1)).Font.Bold = True


)
Rispondi quotando