Tengo una macro para definir los bordes de las celdas en una hoja de cálculo: color, línea interior y exterior. Esta macro funciona perfectamente en OOo, pero en LibreOffice no funciona. Ni siquiera da error, simplemente no hace nada. En cambio, si en lugar de definir dos líneas sólo indico una (interior o exterior), sí va bien en LibreOffice.
Agradecería una ayuda.
Sub FormatoCeldas()
Dim oSel As Object
Dim oBordeLinea As New com.sun.star.table.BorderLine
oSel = ThisComponent.getCurrentSelection()
With oBordeLinea
.Color = RGB(255,0,0)
.InnerLineWidth = 50
.OuterLineWidth = 50
.LineDistance = 20
End With
With oSel
.TopBorder = oBordeLinea
.BottomBorder = oBordeLinea
.LeftBorder = oBordeLinea
.RightBorder = oBordeLinea
End With
End Sub
Última edición por Basedw el Mar Mar 05, 2013 1:55 pm, editado 2 veces en total.
Efectivamente, ahora no funciona, supongo que ahora si empieza el cambio en el API, mientras puedes crear un estilo como quieres los bordes y aplicarlo directamente:
De hecho, es la forma en que te recomiendo aplicar estilos, es mucho más sencillo...
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3 No respondo preguntas privadas, por favor, usa el foro
Gracias por contestar tan rápido. No he contestado antes por esperar a llegar a la parte del libro en la que se trata el tema de los estilos. Ahí se explica muy bien la forma de crear un estilo pero no he sabido dar con la clave para crear un estilo de celda en el que se definan los bordes de celda.
También lo he probado mediante la utilización de estilos de celda. Sucede lo mismo. Si intento definir los bordes de página mediante un estilo ocurre lo mismo.
Funcionan bien en oOO pero no en LibreOffice salvo que no defina más que una de las dos líneas.
Sub Estilos5R()
Dim oDoc As Object
Dim oSel As Object
Dim oEstilos As Object
Dim oEstilosCelda As Object
Dim oEstiloNuevo As Object
Dim oBordeLinea As New com.sun.star.table.BorderLine
'Accedemos al documento actual
oDoc = ThisComponent
'Accedemos a la selección
oSel = ThisComponent.getCurrentSelection()
'Accedemos a todos los estilos
oEstilos = oDoc.getStyleFamilies()
'Accedemos a los estilos de celda
oEstilosCelda = oEstilos.getByName("CellStyles")
'Verificamos que el estilo exista
If oEstilosCelda.hasByName( "Resaltado1" ) Then
oSel.CellStyle = "Resaltado1"
Else
'Si no existe lo creamos
oEstiloNuevo = oDoc.createInstance( "com.sun.star.style.CellStyle" )
'Lo agregamos a la colección de estilos
oEstilosCelda.insertByName( "Resaltado1", oEstiloNuevo )
'Establecemos su formato
With oBordeLinea
'El color (rojo)
.Color = RGB(255,0,0)
'El ancho de la línea exterior
.OuterLineWidth = 50
'El ancho de la línea interior
.InnerLineWidth = 50
'La distancia entre las líneas
.LineDistance = 20
End With
'Establecemos los bordes
With oSel
.TopBorder = oBordeLinea 'Superior
.BottomBorder = oBordeLinea 'Inferior
.LeftBorder = oBordeLinea 'Izquierdo
.RightBorder = oBordeLinea 'Derecho
End With
'Y lo aplicamos
oSel.CellStyle = "Resaltado1"
End If
End Sub
Hola...
Coincido, parece que en LibreOffice no funciona correctamente. Considero que esto es un problema del propio programa, inclusive tal vez estemos hablando de un posible bug, según yo.
Si en la celda A1 tenemos definido el formato por ejemplo, entonces podemos copiarlo facilmente a las celdas que querramos.
Muchas gracias por la ayuda.
Parece que LibreOffice tiene algunos bugs. No estaba seguro de que la causa no se debiera a que ya hacía algo mal.
Creo que con esto habrá que dar el tema por resuelto. Habrá que esperar a que LibreOffice lo resuelva realmente en una próxima versión.
No nada de resuelto.
Ciertamente en LibreOffice no quedan los bordes predeterminados cuando se abre nuevo documento. Sí de uno en uno.
Pendiente de resolución.
Si el usuario que hace la pregunta la dá como resuelta, es porque con las respuestas obtenidas considera que se ha dado solución a su consulta, aunque la solución obtenida sea que no la hay.
Por supuesto que el problema sobre el que versa el tema deberá corregirse, y está pendiente, pero no es esa la función del Foro, por lo que consideramos que está bien dar el tema por resuelto.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3 No respondo preguntas privadas, por favor, usa el foro