Might it be that the file is in use by another application? For example opened by Excel?
xls := TXlsFile.Create(True);
xls.NewFile(1);
xls.Save('myfile.xls');
will for sure replace the file if it is writable, this is very basic functionality and all my own programs wouldn't work if it didn't. But, if the file is readonly, or it is opened by Excel (or maybe other app, even your own app), it will raise an Exception.
Can you try the code above in a simple app, and let me know if it raises an Exception? And if it does, which is the exact error message you get? Also just in case, which operating system?
Sorry for the confusion. It is working properly. The debug IDE was hiding the actual cause of the error. It was being thrown from elsewhere. Problem solved.