Can't do subsequent reads from SD card

Only thing I can think of is that you're lopping through it so fast that SD itself can't keep up and fails. Try adding a delay so it only runs every 1/4 second for example, or every second, or however long between when you close the file and when you re-open it again.

volatile long lastRun;

void setup() { ... }

void loop() {
  if (millis() - lastRun > 250) {   // run every 1/4 second
    myFile = SD.open(...);
    if (myFile) {
       ...
    } else {
       ...
    }
    lastRun = millis();
  }
}