Una forma de acelerar el envío de datos es hacerlo enviando grupos de celdas en vez de celda a celda
//by _LEO
// Creamos el array donde copiaremos los datos a enviar
int bounds[4] = {0, StringGrid1->RowCount-1, 0, StringGrid1->ColCount-1};
Variant data = VarArrayCreate(bounds, 3, varVariant);
// Copiamos el contenido del StringGrid en el array
for (int y=0; y<StringGrid1->RowCount; y++)
for (int x=0; x<StringGrid1->ColCount; x++)
data.PutElement(StringGrid1->Cells
//---> Usamos una instancia de excel abierta
Variant excel = GetActiveOleObject("Excel.Application");
Variant sheet = excel.OlePropertyGet("ActiveSheet");
// Seleccionamos el princio del rango
Variant range = sheet.OlePropertyGet("Range", "A1");
// Adaptamos el tamaño del rango a nuestro array
range = range.OlePropertyGet("Resize",
StringGrid1->RowCount, StringGrid1->ColCount);
// Enviamos los datos del array
range.OlePropertySet("Value", data);