Примерно так должно работать:
Sub SetTimeout()
Application.OnTime Now + TimeValue("00:00:30"), "SaveAsCSV"
End Sub
Sub SaveAsCSV()
Calculate
ActiveWorkbook.SaveAs Filename:="book1.csv", FileFormat:=xlCSV, CreateBackup:=False
Call SetTimeout
End Sub
Просто звоните SetTimeout()
всякий раз, когда вы хотите начать сохранение, и оно будет делать это каждые 30 секунд с этого момента (отсюда и часть Now + TimeValue("00:00:30")
)