Runtime error 58 occurs when you try to rename a file with a name that already exists (in the same folder), or you try to save a new file with the same name as one that already exists (in the same folder).
With MSDOS, sorry Windows you cannot insert information into a file that already exists. The way around this is to first re-name the old file (so it is still there if you need it, a temporary file so to speak) with an obscure name (I use a few relevant "ABC" characters) plus a randomly generated number) for new name of the "old" file. Then I use a string to store the new name of the file (so I can still refer to it). Then you save the new information to the old file name (now you have re-named it, it won't clash). At this point if it goes wrong you can then re-name the "backup" file and you will be where you were before. If there is no problem and the new file is saved then you just delete the temporary file. If you don't then the folder will become full of the temporary files.
This sounds confusing. I think Comatose will understand what I mean. I hope you do as well.
If you are just trying to create a new file and want to delete the old file. use kill before your open statement.
kill app.path & "\file.txt"
But like mrConfused stated, i would rename the file first. You might try nameing each file with the date and time, something like this usually does not get overwritten because the file name is always different, unless someone has reset the system clock or your writing more than one file per second.
Open App.Path & "\" & Year(Date) & Month(Date) & Day(Date) & Hour(Time) & Minute(Time) & Second(Time) & ".txt" For Output As #1