The file C:\Users\AMPL\Results.xls is already specified in C:\Users\AMPL\readoff.dsn. Then the string "C:\Users\AMPL\Results.xls" in your table statement is interpreted as the range name in the spreadsheet, and it is converted to C__Users_AMPL_Results.xls because special characters are not allowed in range names.
Also since range names are unique in all sheets of the entire workbook, only the range name should be given in the table statement.
Thus you should drop the filename and tab name from your statement:
table Results_table OUT "ODBC" 'C:\Users\AMPL\readoff.dsn'
"Results_table" 'verbose=1' : [PROD,WEEKS], Make, Inv, Sell;
If you run "write table Results_table;" a second time, the values written the first time will be replaced in the spreadsheet by the new values. To write to a different range every time, you need define an indexed collection of tables, as in this example:
table Results_table {i in S} OUT "ODBC" 'C:\Users\AMPL\readoff.dsn'
("Results_table" & i) 'verbose=1' : [PROD,WEEKS], Make, Inv, Sell;
Then you can use a loop like
for {i in S} {
...
write table Results_table[i];