Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Problema con ExcelApplication.ActiveWorkbook.SaveAs (https://www.clubdelphi.com/foros/showthread.php?t=25255)

sitrico 16-09-2005 23:20:12

Problema con ExcelApplication.ActiveWorkbook.SaveAs
 
Tengo el siguiente código:

Código Delphi [-]
Arch := StrDir(DirDest.Text)+NombreArchivo+'.XLS';
// ExcelApplication1.ActiveWorkbook.SaveAs(Arch,xlNormal, '', '', false, false,
//           xlNochange,xlUserResolution,False,EmptyParam,EmptyParam,
//           LCID);
ExcelApplication1.ActiveWorkbook.SaveAs(Arch,xlNormal, '', '', false, false,
         xlNochange,xlUserResolution,False,EmptyParam,EmptyParam,
         xlLocalFormat1,LCID);
If MostrarExcel.Checked Then
   ExcelApplication1.Visible[0] := true
Else
   ExcelApplication1.Quit;

Funcionaba perfectamente con los componentes de servers Office 2000 pero tuve que cambiarlos por los Office XP y a partir de ese momento no funcionó la línea del SaveAs (Incorporó un parámetro adicional (xlLocalFormat1 creo), antes funcionaba bien con la línea comentada)

Genera una excepción de Violación de Acceso en C88B5300

Alguien tiene un ejemplo con un ExcelApplication1.ActiveWorkbook.SaveAs que funcione.

PD. Si no uso el SaveAs el archivo se abre la hoja pero sin nombre (LibroX)

PD2. El comando SaveCopyAs funciona, pero al cerrar la hoja igual me pide el nombre.

PD3 El origen del problema es que con los componentes Office 2000 no abre el archivo con Office 2003 (Ole Error)

lgarcia 17-09-2005 15:59:38

Problema con Excel
 
Hola:

Yo trabajo con Office 2003 y nunca he tenido ese problema te voy a enviar un codigo a ver si te sirve

Código:

 
procedure TFormMenu.Plantilla1Click(Sender: TObject);
var
  Excel, Libro: Variant;
  i: integer;
  Nombre: string;
begin
  Excel:=CreateOleObject('Excel.Application');
  Excel.Visible := False;
  Excel.DisplayAlerts:= False;
  Excel.WorkBooks.Add('C:\Archivos de programa\Tienda\Productos.xlt');
  Excel.WorkBooks[1].WorkSheets[1].Name := 'Productos';
  Libro := Excel.WorkBooks[1].WorkSheets['Productos'];
  with Productos do
  begin
        Close;
        Open;
  end;
  Productos.First;
  i:= 2;
  while not (Productos.Eof) do
  begin
        Libro.Cells [i,1] := ProductosCodTrasval.Value;
        Libro.Cells [i,2] := ProductosDescripcionPLU.Value;
        Libro.Cells [i,3] := ProductosPrecioCosto.Value;
        Libro.Cells [i,4] := ProductosPrecioventa.Value;
        Libro.Cells [i,5] := Productosum.Value;
        Libro.Cells [i,6] := ProductosCategoria.Value;
        inc(i);
        Productos.Next;
  end;
  Libro.SaveAs('C:\Archivos de programa\Tienda\Listado transferencias');
  ShowMessage(' El fichero Listado transferencias.xls ha sido creado exitosamente');
  Excel.Quit;
end;

En el uses de la Unit incluyo Excel97, ComObj y siempre me trabaja bien en este caso yo utilizo una plantilla Excel (.xlt) para darle formato a las celdas y no tener que preocuparme por la programacion.

Saludos
Luis Garcia

_____________________________
La mejor manera de decir es hacer

sitrico 17-09-2005 21:37:50

Cita:

Empezado por lgarcia
En el uses de la Unit incluyo Excel97, ComObj y siempre me trabaja bien

Por lo que dices aquí, creo que estas usando los componentes office 97, y mi problema es con los componentes Offixe XP

En realidad con los componentes office 2000 el programa me funcionaba perfectamente, pero me ocurría un error cuando el usuario tenía instalado ofiice 2003 (no había problemas si era 97, 2000 o 2002) por eso actualice a los componentes office XP.

Voy a tratar de anotar el error exacto que se genera para dar más luces.

Pero de cualquier manera voy a probar algo similar a ver que pasa


La franja horaria es GMT +2. Ahora son las 04:38:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi