Ver Mensaje Individual
  #1  
Antiguo 02-08-2008
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Reputación: 21
santiago14 Va por buen camino
Question crear libro excel desde delphi en windows vista

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');
{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;
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita