Ordenar una hoja de Excel por el color de las celdas desde DataCycle
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:
Después de la ejecución: