Ordenar una hoja de Excel por el color de las celdas desde DataCycle
06-20-2008
Montse Cortés in Trucos Excel

Las infinitas posibilidades que nos ofrece la potente tarea de Ejecución de scripts definida dentro de un proceso de DataCycle Reporting nos permite realizar acciones como esta, ordenar una hoja en función del color de las celdas.

Este ejemplo que hemos diseñado nos permite ordenar una lista de nombres de informes donde cada uno tiene asignado un color en función del estado: Revisar, Pendiente, Aprobado, No aprobado,...

A continuación se muestra el ejemplo programado en Visual Basic Script que utiliza un informe ubicado en el directorio C:\Scripts\test.xls. La hoja de Excel que contiene la lista de informes es Hoja1

Sub OrdenarCeldasPorColor
    Const xlAscending = 1
         Const xlYes = 1

    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = False

    Set objWorkbook = objExcel.Workbooks.Open("C:\Scripts\Test.xls")
    Set objWorksheet = objWorkbook.Worksheets("Hoja1")
    i = 2

    Do Until objExcel.Cells(i, 1) = ""
        intColor = objExcel.Cells(i,2).Interior.ColorIndex
        Select Case intColor
            Case 3 intSortOrder = 4
            Case 4 intSortOrder = 1
            Case 6 intSortOrder = 2
            Case 41 intSortOrder = 3
        End Select
        objExcel.Cells(i, 3) = intSortOrder
        i = i + 1
    Loop

    Set objRange = objWorksheet.UsedRange
    Set objRange2 = objExcel.Range("C2")
    objRange.Sort objRange2, xlAscending, , , , , , xlYes

    Set objRange = objRange2.EntireColumn
    objRange.Clear
    Set objRange = Nothing
    Set objRange2 = Nothing
    objWorkbook.save
    objWorkbook.close False
    Set objWorksheet =  Nothing
    Set objWorkbook =  Nothing

End Sub

 

Antes de la ejecución del script nuestra hoja excel contenía:

antes.JPG 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Después de la ejecución:

despues.JPG 

Article originally appeared on ApeSoft (http://blog.apesoft.es/).
See website for complete article licensing information.