If you could find a way to replace the calls to querySubObject() and dynamicCall() in the inner loop over the cells, that would probably speed things up considerably.

QAxObject is convenient, but if you can #import the Excel type libraries this would let you use the Excel COM objects directly without all the parsing overhead. Here's a link that might help.