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 07-06-2007
adfa76 adfa76 is offline
Miembro
 
Registrado: ene 2007
Posts: 12
Poder: 0
adfa76 Va por buen camino
Subtotales de Excel

Hola gente.
Estoy intentando usar desde un programa hecho en Delphi 7 la función subtotal de Excel.

Código Delphi [-]
excel.range['a2:g50'].Subtotal(1,-4157,4,false,false,true);

Una macro de excel al grabarla haciendo los subtotales hace esto:

Cita:
Sub Macro1()
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(4,6), _
Replace:=False, PageBreaks:=False, SummaryBelowData:=True
End Sub
Este tema por lo que vi fue tratado en este post.
21959
Si bien la solución encontrada por tutuk es funcional me gustaria poder hacerla un poco más elegante (sobre todo porque no es tan sencillo para mi aplicacion el ir recorriendo las celdas para pegar la formula).

El problema radica en el parametro "TotalList" de la funcion que segun la ayuda del Excel recibe un Variant con una matriz adentro.
Si ejecuto el programa tal cual la sentencia que esta arriba funciona, pero no le he encontrado la vuelta para poder totalizar más de una columna.

He provado usar la funcion varArrayOf([4,6]) por ejemplo para totalizar esas 2 columnas pero no he tenido suerte, hay un tema con los tipos y no me doy cuenta que es.

Alguien tiene como hacerlo funcionar.

Saludos
Responder Con Cita
  #2  
Antiguo 11-06-2007
adfa adfa is offline
Miembro
 
Registrado: may 2003
Ubicación: Montevideo-Uruguay
Posts: 119
Poder: 22
adfa Va por buen camino
Bueno, me contesto yo
Eso que yo hacia; lo hacia creando un objeto con:
Código Delphi [-]
var
   excel: Variant;
   excel  := CreateOleObject('Excel.Application');
//varias escrituras en celdas
   excel.selection.Subtotal(1,-4157,varArrayOf([4]),false, false,true);
Bien, esto funciona de maravilla.
Ahora esto no funciona, da un error el Excel.
Código Delphi [-]
var
   excel: Variant;
   excel  := CreateOleObject('Excel.Application');
//varias escrituras en celdas
   excel.selection.Subtotal(1,-4157,varArrayOf([4,5]),false, false,true);

Hice la prueba con los componentes de la paleta server.
Código Delphi [-]
var
   hoja : _WORKSHEET;
   libro : _WORKBOOK;
   i: integer;
begin
   libro := ExcelApplication1.Workbooks.Add(NULL, 0);
   Hoja := Libro.Sheets[1] as WORKSHEET;
//varias escrituras en celdas
hoja.Range[hoja.Cells.Item[1,1],hoja.Cells.Item[4,3]].Subtotal(1,xlSum,varArrayOf([4,5]),false,false,xlSummaryBelow);
  ExcelApplication1.Visible[0] := true;
Esto funciona perfecto, ahora bien encontre la solución pero tengo que reescribir casi toda la aplicación para usar los componentes de la solapa server.
Pero bueno lo hago, no me da pereza aunque me falta el tiempo.
Lo que no me gusta es quedarme con la intriga, alguien puede decirme porque el varArrayOf en un caso funciona y en otro no??

Saludos y gracias
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
subtotales en un grid federicorl OOP 4 10-12-2006 20:34:32
Subtotales al comienzo yusnerqui Varios 6 08-06-2006 16:02:20
En los subtotales por pagina alcides Impresión 0 07-06-2005 20:20:06
Subtotales en Excel tutuk Servers 4 04-06-2005 00:56:58
Subtotales en QuickReport raugadel Impresión 3 12-05-2004 16:13:49


La franja horaria es GMT +2. Ahora son las 11:28:57.


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