When I change the file format to Save As a .csv file, it runs in seconds.
Well, that sounds pretty conclusive to me. Figuring out why Excel takes so long for the file you're giving it may be a pain, and I doubt that examining your own code further will help a whole lot. Time to ask someone who knows Excel somewhat better.