To find out where the time is going, you might try timing some of the routines—my MultiTimer macro does just that, and lets you get subtotals just by inserting calls wherever you need them. You might be surprised to find where the time is going. I know I was when I worked on optimizing my biggest time-consuming macros.
-rob.