Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Servers
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-08-2008
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 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
  #2  
Antiguo 02-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,

probablemente es por los permisos. No conozco windows vista, pero deberias crear el archivo en una carpeta compartida y publica.
Responder Con Cita
  #3  
Antiguo 02-08-2008
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Wink windows vista

¿Hay alguna manera de manipular esos permisos?
Sería gratificante poder guardar la exportación en un archivo excel en la unidad C:\ cuanto menos. En realidad me conformaría que se pudiera guardar en cualquier lado.

Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #4  
Antiguo 02-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
puedes probar una carpeta dentro de la carpeta de tu programa: si puede ejecutarlo, entonces deberia poder escribir en ella. Tambien puedes probar de encontrar los documentos del usuario. Mira por aqui el foro, que seguramente encuentras como acceder a ellas.
Responder Con Cita
  #5  
Antiguo 03-08-2008
Luis F. Orjuela Luis F. Orjuela is offline
Miembro
 
Registrado: may 2003
Ubicación: Bogotá - Colombia
Posts: 68
Poder: 21
Luis F. Orjuela Va por buen camino
Crear libro en EXCEL Windows VISTA

Hola SANTIAGO.

Tu problema está en tu variable:
nombreArchivo:string = 'c:\PlanillaDiaria';
pues en Windows Vista no se puede grabar directamente en la raíz, es decir, en "c:\", para efecto de pruebas créate una carpete por ejemplo:
"c:\mis archivos excel"
y cambia tu variable por:
nombreArchivo:string = 'c:\mis archivos excel\PlanillaDiaria';

y muy pero muy probablemente te funcionará.

Cordialmente

LUIS FERNANDO ORJUELA
BOGOTA COLOMBIA

"Tómate un café, yo invito..."
__________________
Ing. LUIS FERNANDO ORJUELA
BOGOTA - COLOMBIA
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Crear aplicaciones en C++ Builder 6 compatibles con Windows Vista morelo C++ Builder 1 02-08-2008 19:28:09
Crear libro Excel con sheets en docs diferentes Gaya Servers 0 07-07-2008 03:24:49
Crear proceso desde servicio en windows vista cheke API de Windows 1 09-08-2007 02:31:57
Crear Aplicaciones con Delphi listas para Windows Vista gluglu Noticias 1 06-11-2006 17:26:02
Como crear un libro de excel con 6 hojas no estoy usando el ExcelApplication Martha Ayala Servers 3 24-10-2005 18:33:49


La franja horaria es GMT +2. Ahora son las 03:00:49.


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
Copyright 1996-2007 Club Delphi