cancel
Showing results for 
Search instead for 
Did you mean: 

Border con VBO de excel

Kevin_EstebanRa
Level 2
Hola estimados !

Les vengo a pedir ayuda con un problema reciente que tuve con una acción de la librería de excel.

Lo que pasa, es que necesito usar la acción "Set Border Cell". Cabe mencionar que al ejecutar en una sola celda (ej: "C2") funciona excelente, pero al darle un rango (ej: "C2:C12") funciona, pero celda por celda.

Me ayudo con imágenes para esadxplicar mejor:

Esperado:
36110.png
Lo que obtengo:
36111.png

Cómo puedo modificar el código para poder obtener solo los border, y que no me rellene cada celda con bordes ?

Muchas Gracias !
1 BEST ANSWER

Best Answers

MSOLARI_2019
Level 3
SI en tu versión no tienes un método Set Border Range Cell, puedes incorporarlo a la librería VBO BPA Object - MS Excel basándote en código VBA generado por una macro. La idea es que hagas crecer tus librerías. Puedes crear una macro automática y luego tomarlo como base para crear el método nuevo en la librería:

Range("C414:E426").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

View answer in original post

4 REPLIES 4

MSOLARI_2019
Level 3
Set Border Cell solo aplica para celda, no para rango de celdas...¿Qué versión de BluePrism tienes instalada?

MSOLARI_2019
Level 3
SI en tu versión no tienes un método Set Border Range Cell, puedes incorporarlo a la librería VBO BPA Object - MS Excel basándote en código VBA generado por una macro. La idea es que hagas crecer tus librerías. Puedes crear una macro automática y luego tomarlo como base para crear el método nuevo en la librería:

Range("C414:E426").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

Kevin_EstebanRa
Level 2
@Marcello Solari
Tengo ​la versión 6.6, y este es el código que está en la librería:

GetWorkbook(handle,Nothing).ActiveSheet.Range(cellref,cellref). _
Borders.LineStyle = linestyle

GetWorkbook(handle,Nothing).ActiveSheet.Range(cellref,cellref). _
Borders.Weight = weight

GetWorkbook(handle,Nothing).ActiveSheet.Range(cellref,cellref). _
Borders.ColorIndex = color

MSOLARI_2019
Level 3
En efecto, en la instrucción se está indicando la inserción de líneas (todas) en la parte de arriba, abajo, a la izquierda y a la derecha en todas las celdas del rango. Debes crear un nuevo método en la que las líneas solo estén en los bordes y no en las celdas interiores del bloque. Esto es sencillo de hacer y básate en el código de la macro que te envié para aplicar. Recuerda no modificar el método existente, crea uno nuevo basándote en ese y aplicas los cambios.