I would copy the code to a new routine and remove everything but the lines required to open the workbook. Once that works start adding stuff back in...
Sometimes objects persist if they are not explicitly closed. This can cause enumerated objects/references to get crossed up. Try saving...