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.
Código Delphi
[-]
procedure ExportarExcel_PlanillaDiaria(planillaDiaria:TPlanillaDiaria;
cantHojasExcel:integer = 2; nombreArchivo:string = 'c:\PlanillaDiaria');
var
Excel: variant; Libro: variant; HojaBuenos, HojaMalos: variant; filaCliente, saltoFilaCliente: integer;
i:integer;
nro:integer;
begin
with planillaDiaria do
begin
try
Excel := CreateOleObject('Excel.Application');
Excel.visible := False;
Excel.DisplayAlerts:= False;
Excel.SheetsInNewWorkbook := cantHojasExcel;
Libro := Excel.WorkBooks.Add;
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'];
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);
filaCliente:=7;
saltoFilaCliente:=6;
try
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; finally
filaCliente:=7;
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; finally
end; end; 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; end end;