Delphi - Crear libro excel desde delphi en windows vista

 
Vista:

Crear libro excel desde delphi en windows vista

Publicado por Santiago Russo (15 intervenciones) el 02/08/2008 20:27:36
Buenas, tengo un problema, quiero crear un libro excel desde delphi pero en windows vista no me lo permite. El error que me da es algo así:

"No se pudo guardar el archivo solicitado C:ED966500, las causas podrían ser:
La ruta no existe,
No tiene permisos
...... "

Lo extraño es que en XP funciona sin problemas. Bueno, pongo el código de lo que estoy diciendo para ver si alguien me ayuda.

Muchas gracias.

[delphi]
procedure ExportarExcel_PlanillaDiaria(planillaDiaria:TPlanillaDiaria;
cantHojasExcel:integer = 2; nombreArchivo:string = 'c:PlanillaDiaria');
{En este caso se crea el libro y dos hojas}
var
Excel: variant; // Aplicación Excel
Libro: variant; // Libro de trabajo
HojaBuenos, HojaMalos: variant; // Hoja de cálculo
filaCliente, saltoFilaCliente: integer;
i:integer;
nro:integer;
begin
with planillaDiaria do
begin
try
Excel := CreateOleObject('Excel.Application');
Excel.visible := False;
Excel.DisplayAlerts:= False;
//Creamos un nuevo libro de trabajo
Excel.SheetsInNewWorkbook := cantHojasExcel;
Libro := Excel.WorkBooks.Add;

//Le ponemos nombres a las hojas
Excel.WorkBooks[1].WorkSheets[1].Name := 'Buenos';
Excel.WorkBooks[1].WorkSheets[2].Name := 'Malos';

HojaBuenos:=Excel.WorkBooks[1].WorkSheets['Buenos'];
HojaMalos:=Excel.WorkBooks[1].WorkSheets['Malos'];

//Algo de Cartelería
HojaBuenos.cells[1,3]:='Planilla Semanal de Cobros'; HojaMalos.cells[1,3]:='Planilla Semanal de Cobros';
HojaBuenos.cells[2,3]:='Cobrador:'; HojaMalos.cells[2,3]:='Cobrador:';
HojaBuenos.cells[3,3]:='Zona:'; HojaMalos.cells[3,3]:='Zona:';
HojaBuenos.cells[2,4]:=nombreCobrador; HojaMalos.cells[2,4]:=nombreCobrador;
HojaBuenos.cells[3,4]:=zonaCobrador; HojaMalos.cells[3,4]:=zonaCobrador;

HojaBuenos.cells[5,1]:='CLIENTE'; HojaMalos.cells[5,1]:='CLIENTE';
HojaBuenos.cells[5,3]:='Lunes'; HojaMalos.cells[5,3]:='Lunes';
HojaBuenos.cells[5,4]:='Martes'; HojaMalos.cells[5,4]:='Martes';
HojaBuenos.cells[5,5]:='Miércoles'; HojaMalos.cells[5,5]:='Miércoles';
HojaBuenos.cells[5,6]:='Jueves'; HojaMalos.cells[5,6]:='Jueves';
HojaBuenos.cells[5,7]:='Viernes'; HojaMalos.cells[5,7]:='Viernes';
HojaBuenos.cells[5,8]:='Sábado'; HojaMalos.cells[5,8]:='Sábado';

HojaBuenos.cells[6,3]:=#39 + dateToStr(fechaLunes); HojaMalos.cells[6,3]:=#39 + dateToStr(fechaLunes);
HojaBuenos.cells[6,4]:=#39 + dateToStr(fechaMartes); HojaMalos.cells[6,4]:=#39 + dateToStr(fechaMartes);
HojaBuenos.cells[6,5]:=#39 + dateToStr(fechaMiercoles); HojaMalos.cells[6,5]:=#39 + dateToStr(fechaMiercoles);
HojaBuenos.cells[6,6]:=#39 + dateToStr(fechaJueves); HojaMalos.cells[6,6]:=#39 + dateToStr(fechaJueves);
HojaBuenos.cells[6,7]:=#39 + dateToStr(fechaViernes); HojaMalos.cells[6,7]:=#39 + dateToStr(fechaViernes);
HojaBuenos.cells[6,8]:=#39 + dateToStr(fechaSabado); HojaMalos.cells[6,8]:=#39 + dateToStr(fechaSabado);

//Iniciamos en cierta fila
filaCliente:=7;
//Indicamos de cuantas filas es el salto
saltoFilaCliente:=6;
try
//Iniciamos el armado de la hoja de buenos
for i:=0 to high(planillaDiaria.clientesBuenos) do
begin
HojaBuenos.Cells[filaCliente + 0, 1]:=clientesBuenos[i].nombre;

HojaBuenos.Cells[filaCliente + 1, 1]:=clientesBuenos[i].domicilioCobro;

HojaBuenos.Cells[filaCliente + 2, 1]:='Nro. Crédito:';
HojaBuenos.Cells[filaCliente + 2, 2]:=clientesBuenos[i].nroCredito;

HojaBuenos.Cells[filaCliente + 3, 1]:='Monto Cuota: $';
HojaBuenos.Cells[filaCliente + 3, 2]:=clientesBuenos[i].montoCuota;

HojaBuenos.Cells[filaCliente + 4, 1]:='Fecha Semanal:';
if clientesBuenos[i].fechaSemanal > 0 then
HojaBuenos.Cells[filaCliente + 4, 2]:=#39 + dateToStr(clientesBuenos[i].fechaSemanal);

filaCliente:=filaCliente + saltoFilaCliente;
end; //del for...
finally
//Iniciamos en cierta fila
filaCliente:=7;
//Iniciamos el armado de la hoja de buenos
try
for i:=0 to high(planillaDiaria.clientesMalos) do
begin
HojaMalos.Cells[filaCliente + 0, 1]:=clientesMalos[i].nombre;

HojaMalos.Cells[filaCliente + 1, 1]:=clientesMalos[i].domicilioCobro;

HojaMalos.Cells[filaCliente + 2, 1]:='Nro. Crédito:';
HojaMalos.Cells[filaCliente + 2, 2]:=clientesMalos[i].nroCredito;

HojaMalos.Cells[filaCliente + 3, 1]:='Monto Cuota: $';
HojaMalos.Cells[filaCliente + 3, 2]:=clientesMalos[i].montoCuota;

HojaMalos.Cells[filaCliente + 4, 1]:='Fecha Semanal:';
if clientesMalos[i].fechaSemanal > 0 then
HojaMalos.Cells[filaCliente + 4, 2]:=#39 + dateToStr(clientesMalos[i].fechaSemanal);

filaCliente:=filaCliente + saltoFilaCliente;
end; //del for...
finally

end; //del finally
end; //del finally
//Grabamos el archivo
randomize;
nro:=random(100000);
while FileExists(nombreArchivo + '_' + intToStr(nro) + '.xls') do
begin
nro:=random(100000);
end;
nombreArchivo:=nombreArchivo + '_' + intToStr(nro);
Libro.saveAs(nombreArchivo);
Excel.quit;
Application.MessageBox(pchar('Exportación del Planilla semanal a Excel exitosa.'
+ #13#10 + 'Ubicación: ' + nombreArchivo + '.xls'),'Exportación a Excel',
mb_Ok + MB_ICONINFORMATION);
except
on e:exception do
begin
excel.quit;
Application.MessageBox(pchar('¡Sin exportación!' + #13#10 +
'Mensaje: ' + e.message),'Exportación a Excel' ,mb_OK + mb_IconError);
end;
end; //del try
end //del with
end;
[/delphi]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder