Lo siento el código que te di era para abrir un xls ya creado con anterioridad, y meterle los datos (en mi opinión es mejor ya que puedes poner imágenes y darle un formato más agradable de una forma fácil).
Ahora para crear el xls desde cero solo se necesitarían unas pequeñas modificaciones que son:
Código:
Variant XL,v0,v1; //quite variables que no se usan
XL=Variant::CreateObject("excel.application");
XL.OlePropertySet("Visible", true);
XL.OlePropertyGet("Workbooks").OleProcedure("Add"); //se agrega un libro
//Aqui e se cambia Reporte por Hoja1 que es el nombre por defecto de las hojas de excel
v0=XL.OlePropertyGet("Sheets", "Hoja1");
v1=v0.OlePropertyGet("Cells");
//DATOS//
//se escriben los datos como ya lo haces
v1.OlePropertyGet("Cells", 2/*cordenada y*/, 3/*cordenada x*/).OlePropertySet("Value", "lolo");
XL.OlePropertySet("DisplayAlerts", false);
//aqui es donde se guarda
XL.OlePropertyGet("Workbooks").OlePropertyGet("Item",1).OleProcedure("SaveAs", "C:\\test.xlsx"/*xlsxpor que uso office 2007*/);
XL=Unassigned;
Pd. La parte de los datos se queda exactamente igual, solo se cambia la forma en la que se trabaja con “XL”.
Pd2. Ese error da cuando se intenta acceder a una función que no existe, debido a que el manejo de “OleProcedure” es complejo no me di cuenta de los dos fallos del anterior código
. Nos vemos y cuenta como te fue.
Edito: en caso de que abras Excel de forma oculta, no se te olvide poner “XL.OleProcedure("Quit");” antes de “XL=Unassigned;” para cerrarlo, de lo contrario se quedara abierto y solo se serrara terminando el proceso en el administrador.