Alla terza domanda mi rispondo da solo.
E' sufficiente che conti il numero dei record così

totRecord = objRST.RecordCount

e per le celle sottostanti metta ad esempio

xlSheet.Cells(totRecord + 4, 1).Value = "lavorativi"
xlSheet.Cells(totRecord + 5, 1).Value = "formativi"
.....

Per le altre due domande spero nel vostro aiuto.