Yeah, like I said this method is not very "universal". One small change in your latest version and the enemy sprite gets stuck:
I think this idea might work better (inspired by maze solving algorithm) -
Create an invisible square block (green) under each tile, slightly bigger in size.
Move Enemy sprite along the edge of this green block, from corner to corner (clockwise).
When Enemy is overlapping next block - "jump" to the next block and continue moving in straight line.
If Enemy is overlapping two other blocks, pick the block which is to the left from the current movement line, and jump to this next block.
This can actually be done without the green blocks, it's just easier to explain with them.
Don't ask me for a demo, I've spent too much time on this already