It looks suspiciously like your data exceeds the 1GB memory limit of Excel 2003. The 2GB limit of Excel 2007 may not, in practice, be a sufficient solution. You could (with sufficient RAM have two independent copies of Excel open at the same time, each with part of your file but this may very well run counter to your application needs. Is there any reason why the whole of your Access database should be in Excel at once rather than a query subset?
For memory limits, see this for example.
By the way, the second parameter for TransferSpreadsheet should be 8 rather than 5, for Excel 2002 and 2003.