In Excel 2003 VBA (and earlier), if you specify the file extension in the Workbook.Save method, then it will be saved as expected.
In Excel 2007 VBA (and later), you need to specify both the file extension and the file format. If you don't, you may succeed in creating a file with a .xls or .xlsm format--but .xlsx extension. I've made this mistake myself on a number of occasions. If so, renaming the file with the correct extension (while Excel is not running) will make it openable.
If the above trick does not work, then it is likely that the file is corrupted--such as if part of the content is missing. In such cases, I have never had success in opening the file using OpenOffice or Libre Office.
My best recourse has been to use an older copy of the file and recreate it. Or even if it doesn't work, then it really helps one excel file repair tool, such as Excel Repair Kit. It neatly and efficiently recovers data from the file and then saves it in the desired format.