Ver Mensaje Individual
  #2  
Antiguo 27-10-2005
Er_Manué Er_Manué is offline
Miembro
 
Registrado: may 2003
Posts: 74
Reputación: 21
Er_Manué Va por buen camino
Talking

Ya lo he solucionado aunque realmente no espero a que cierre Excel, simplemente espero hasta que el usuario cierre todos los libros

Este sería el código definitivo:
Código Delphi [-]
var
  Excel: Variant;
  miWBK, miWS : OleVariant;

  ...

begin
  try
    Excel := GetActiveOleObject('Excel.Application');
  except
    Excel := CreateOleObject('Excel.Application');
  end;

  // Impedimos que se muestre Excel, así como sus alertas
  // (por ejemplo si deseamos guardar el archivos y cosas similares)
  Excel.DisplayAlerts := false;
  Excel.Visible := false;
  
  // Abrimos el fichero .xls y obtenemos la hoja que necesitemos
  miWBK := Excel.WorkBooks.Open(rutaHojaExcel);
  miWS  := miWBK.Worksheets.Item[nombreHojaExcel];
  
  //  Realizamos todas las operaciones con la hoja excel ---------------------
  ...

  // Mostramos la vista previa del informe
  Excel.Visible := true;

  // Esperamos a que se cierre excel
  try
     while Excel.Worksheets.count > 0 do Application.processMessages;
  except
     // Si hemos cerrado todos los libros abiertos, se produce una excepcion
     // saliendo del bucle while     
    try
      // Cerramos Excel
      Excel.Quit;
    finally
      Excel := Unassigned;
    end;
  end;
end;

Salu2
Responder Con Cita