What about the following turnarounds or improvements:
Once opened, save the recordset as xml file (rst.saveToFile xxx) and then have Excel reopen it.
Once opened, put recordset data in an array (rst.getRows xxx), and copy the array on the active sheet
And, at any time, minimise all memory / access requirements: open the recordset as read-only, forward only, close the connection once the data is on your side, etc.