Ordenar planilla Excel desde Visual foxpro 8

387 views
Skip to first unread message

Carlos Molina

unread,
Feb 3, 2014, 10:32:08 AM2/3/14
to publice...@googlegroups.com
Hola amigos, necesito ordenar desde visual fox, una planilla excel por mas de una columna, ejemplo:
Tengo una excel con muchas columnas y entre ellas están la columna legajo (A42) y la columna concepto (A2), como hago para que me ordene los datos de esta planilla por el orden de estas 2 columnas en forma ascendente?.
 
Desde ya muchas gracias!!!!!

Ricardo Pina

unread,
Feb 4, 2014, 6:50:02 AM2/4/14
to Grupo VFP
Hola Carlos

Lo puedes hacer por automación, aunque no veo el motivo
A.- Si es una planilla generada por VFP puedes mandar la info ya ordenada
B.- Si es una planilla que vas a importar puedes ordenar el cursor al traerlo.
C.- Si no es ningúno de los casos anteriores pueder ordenarlo desde Excel.
Si no aplica ningún caso anterior
D.- Si se te complica hacerlo por automación puedes hacerla fácil, traes la data a cursor, lo ordenas y vuelves a mandar el  cursor a la planilla

Saludos

--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

Carlos Molina

unread,
Feb 4, 2014, 7:23:31 AM2/4/14
to publice...@googlegroups.com
Gracias por contestarme Ricardo, el tema es justamente ordenar la planilla una vez abierta desde VFP, podria importar los datos y despues ordenar el cursor, pero por razones operativas necesito ordemar primero la planillla; he encontrado soluciones con la funcion sort.(....), pero solo lo hace por una columna, cuando quiero hacerla por 2 columnas lo hace por la última, en este caso A2. Muchas gracias

Ricardo Pina

unread,
Feb 4, 2014, 8:30:48 AM2/4/14
to Grupo VFP
Hola

Puedes publicar el código a ver si le encontramos la falla.

Saludos

Carlos Molina

unread,
Feb 5, 2014, 7:08:35 AM2/5/14
to publice...@googlegroups.com
Ricardo, no existe ninguna falla, simplemente no se como hacerlo, aca te envio un ejemplo:

objExcel = Createobject("Excel.Application")
objExcel.Visible= .T.
objWorkbook = objExcel.Workbooks.Add
objWorksheet = objWorkbook.Worksheets(1)

With objExcel

.Cells(1, 1).Value="8"
.Cells(1, 2).Value="45"
.Cells(1, 3).Value="A"
.Cells(2, 1).Value="4"
.Cells(2, 2).Value="20"
.Cells(2, 3).Value="B"
.Cells(3, 1).Value="8"
.Cells(3, 2).Value="33"
.Cells(3, 3).Value="C"
.Cells(4, 1).Value="5"
.Cells(4, 2).Value="9"
.Cells(4, 3).Value="D"
.Cells(5, 1).Value="1"
.Cells(5, 2).Value="23"
.Cells(5, 3).Value="E"
.Cells(6, 1).Value="6"
.Cells(6, 2).Value="15"
.Cells(6, 3).Value="F"
.Cells(7, 1).Value="1"
.Cells(7, 2).Value="12"
.Cells(7, 3).Value="G"
.Cells(8, 1).Value="6"
.Cells(8, 2).Value="80"
.Cells(8, 3).Value="H"

EndWith

objRange = objWorksheet.UsedRange
objRange2 = objExcel.Range("A1")
objRange3 = objExcel.Range("B1")
objRange.Sort(objRange2) Solo ordena por la columna A y no se como hacer para ordenar por la columna A y B

Muchas gracias!!!!

Javier Solier

unread,
Feb 5, 2014, 7:43:10 AM2/5/14
to publice...@googlegroups.com
Hola,

Javier Solier

unread,
Feb 5, 2014, 7:45:11 AM2/5/14
to publice...@googlegroups.com
Hola, donde dice  
objRange2 = objExcel.Range("A1")
objRange3 = objExcel.Range("B1")
objRange.Sort(objRange2) Solo ordena por la columna A y no se como hacer para ordenar por la columna A y B 

en objRange2 debes poner
objRange2 = objExcel.Range("A1:B8")


Saludos
Javier

Carlos Molina

unread,
Feb 5, 2014, 7:57:58 AM2/5/14
to publice...@googlegroups.com
Ante todo, gracias Javier, hice lo que me indicaste y sigue ordenando por la columna A solamente.

Javier Solier

unread,
Feb 5, 2014, 8:08:45 AM2/5/14
to publice...@googlegroups.com
Tenes razon, lo acabo de probar y es asi, me parece que tenes que escribir una macro en excel para que lo haga o sino ordenar primero la tabla do donde scas los datos desde el VFP y luego pasarlos ordenados.

Saludos
Javier

Ricardo Pina

unread,
Feb 5, 2014, 9:28:44 AM2/5/14
to Grupo VFP
Hola Carlos

No puedo hacer pruebas con tu ejemplo, pero lo que te esta faltando en el sort es agregarle los distintos criterios de ordenamiento.
Aca te mando un link con codigo de ejemplo como para que lo apliques a tu caso.

http://social.msdn.microsoft.com/Forums/en-US/cdffc48a-72f7-4abf-915e-2ad2ae86c985/fox-pro-and-excel-automation-how-to-set-parms-for-sortsortfieldsadd?forum=visualfoxprogeneral

Saludos

Carlos Molina

unread,
Feb 5, 2014, 9:32:49 AM2/5/14
to publice...@googlegroups.com
Muchas gracias Javier

Carlos Molina

unread,
Feb 5, 2014, 9:33:33 AM2/5/14
to publice...@googlegroups.com
Muchas gracias Ricardo

Carlos Molina

unread,
Feb 5, 2014, 11:10:21 AM2/5/14
to publice...@googlegroups.com
Javier, no puedo hacer una macro en excel dado que estas son generadas por un utilitario y son muchas (tendría que hacer una en cada planilla y perdería mucho tiempo), si lo hago con el cursor, tampoco me conviene dado que en el caso de mi programa, operativamente no me conviene.
Debería existir una forma de concatenar el sort con sus respectivas columnas clave, pero no encuentro nada en Internet.

Ricardo Pina

unread,
Feb 5, 2014, 11:46:20 AM2/5/14
to Grupo VFP
Carlos

Revisaste el link que te envie, ahi estaba la manera de hacerlo.

Saludos

Víctor Hugo Espínola Domínguez

unread,
Feb 5, 2014, 12:47:02 PM2/5/14
to publicesvfoxpro
Hola Carlos

Tu código modificado, funciona OK

*objRange = objWorksheet.UsedRange
*objRange2 = objExcel.Range("A1")
*objRange3 = objExcel.Range("B1")
*objRange.Sort(objRange2) Solo ordena por la columna A y no se como hacer para ordenar por la columna A y B

objExcel.Range("A1:C8").Sort(objExcel.Range("A1"),1,,objExcel.Range("B1"),1)



Saludos,
Víctor.
Lambaré - Paraguay.



El 5 de febrero de 2014, 9:08, Carlos Molina <cmoli...@gmail.com> escribió:

Carlos Molina

unread,
Feb 5, 2014, 1:31:36 PM2/5/14
to publice...@googlegroups.com
MAESTRO, FUNCIONA PERFECTO, MUCHAS GRACIAS A VOS Y A TODOS LOS QUE TRATARON DE SOLUCIONARME EL PROBLEMA.
GRACIAS DE CORAZON

CARLOS MOLINA
ARGENTINA
Reply all
Reply to author
Forward
0 new messages