Sie sind auf Seite 1von 5

Ejemplos de macros para LibreOffice Cal

Copiar una celda


Sub Celda_Copiar( cCelda As String ) Dim a(1) As New com.sun.star.beans.PropertyValue Dim oDispatc As !b"ect# o$rame As !b"ect o$rame % & iscomponent.CurrentController.$rame oDispatc % Createunoser'ice((com.sun.star.)rame.Dispatc *elper() a(+).Name % (&oPoint( a(+).Value % cCelda , por e"emplo# (-.-/( o (./( oDispatc .e0ecuteDispatc (o$rame# (.uno12o&oCell(# ((# +# a()) oDispatc .e0ecuteDispatc (o$rame# (.uno1Copy(# ((# +# Array()) 3nd Sub

Pegar en una celda


Sub Celda_Pegar( cCelda As String ) Dim a(1) As New com.sun.star.beans.PropertyValue Dim oDispatc As !b"ect# o$rame As !b"ect o$rame % & iscomponent.CurrentController.$rame oDispatc % Createunoser'ice((com.sun.star.)rame.Dispatc *elper() a(+).Name % (&oPoint( a(+).Value % cCelda , por e"emplo# (-.-/( o (./( oDispatc .e0ecuteDispatc (o$rame# (.uno12o&oCell(# ((# +# a()) oDispatc .e0ecuteDispatc (o$rame# (.uno1Paste(# ((# +# Array()) 3nd Sub

Ocultar / Mostrar barra de Estado o Frmulas


Sub .arra_Visible(c.arra As String# !ptional lVisible As .oolean) , 4uestra u oculta la barra de estado o la barra de )5rmulas , Nombres de las barras en Calc1 , $5rmulas1 6nput7ineVisible , 3stado1 Status.arVisible Dim o$rame As !b"ect Dim oDispatc As !b"ect Dim args(+) As new com.sun.star.beans.PropertyValue

o$rame % & iscomponent.CurrentController.$rame 6) 6s4issing(lVisible) & en lVisible % &rue args(+).Name % c.arra args(+).Value % lVisible oDispatc % Createunoser'ice((com.sun.star.)rame.Dispatc *elper() oDispatc .e0ecuteDispatc (o$rame# (.uno1( 8 c.arra # ((# +# args()) 3nd Sub

Barra de Estado y Barra de progreso


Esta subrutina utiliza la funcin PadR

Sub .arra3stado( c&e0to As String# !ptional n7ongitud As 6nteger# _ !ptional n4a0 As 7ong# !ptional nValor As 7ong ) , 3stablece el te0to de la barra de estado y los 'alores de la barra de progreso , c&e0to1 &e0to a mostrar. Si es una cadena 'ac9a# reinicia la barra de estado , n7ongitud1 7ongitud del te0to: con'iene )i"ar un 'alor mayor , al de todos los te0tos a mostrar , n4a01 Valor m;0imo de la barra de progreso , nValor1 Valor actual de la barra de progreso Dim 0 As !b"ect Set 0 % & iscomponent.CurrentController.Status6ndicator 6) c&e0to % (( & en , Cerrar .arra de estado y restaurar estado 0.<eset , elimina los 'alores actuales de te0to y de la barra de progreso 0.3nd , reestablece el )uncionamiento por de)ecto de la barra de estado 3lse 0.Start( Pad<(c&e0to#n7ongitud)#n4a0 ) 0.SetValue(nValor) , tambi=n es ';lido 0.Value % nActual 3ndi) 3nd Sub

Ejemplo de uso

Sub 3"emplo() Dim nAct As 7ong# n&ot As 7ong n&ot % 1++ nAct % + .arra3stado (6niciando proceso(# >+# n&ot# nAct ?ait 1+++

$or nAct%+ &o n&ot .arra3stado (Procesando ( 8 nAct 8 ( de ( 8 n&ot# >+# n&ot# nAct ?ait 1++ Ne0t .arra3stado (Proceso terminado(# >+# n&ot# n&ot ?ait 1+++ .arra3stado (( 3nd Sub

E portar en formato E cel


Sub Documento_30portarA30cel( .y'al cNombrey<uta As String ) , 30porta el documento acti'o en )ormato 30cel @A , *ay Bue tener en cuenta los problemas con la e0portaci5n a 30cel Dim aArg(1) As New com.sun.star.beans.PropertyValue aArg(+).Name % (6nteraction*andler( aArg(+).Value % (( aArg(1).Name % ($ilterName( aArg(1).Value % (4S 30cel @A( cNombrey<uta % Con'erttourl( cNombrey<uta ) & iscomponent.Store&oC<7( cNombrey<uta # aArg() ) 3nd Sub

E portar en formato E cel con contrase!a


Sub Documento_30portarA30cel_Password( .y'al cNombrey<uta As String ) , 30porta el documento acti'o en )ormato 30cel @A con contraseDa , *ay Bue tener en cuenta los problemas con la e0portaci5n a 30cel Dim aArg(1) As New com.sun.star.beans.PropertyValue aArg(+).Name % (6nteraction*andler( aArg(+).Value % (( aArg(1).Name % ($ilterName( aArg(1).Value % (4S 30cel @A( aArg(E).Name % (4odi)yPassword6n)o( aArg(E).Value % F>AG@ , inserta aBu9 una contraseDa num=rica cNombrey<uta % Con'erttourl( cNombrey<uta ) & iscomponent.Store&oC<7( cNombrey<uta # aArg() ) 3nd Sub

"e#ol#er las celdas seleccionadas como una tabla $%M&


$unction SeleccionE&abla*&47() As String Dim oSel As !b"ect Dim lSeguir As .oolean Dim col As 7ong# )ila As 7ong Dim c$in As 7ong# )$in As 7ong Dim c As String oSel % & iscomponent.getCurrentSelection() lSeguir%$alse Select Case oSel.get6mplementationName() Case (ScCell!b"( 4sgbo0 (S5lo as seleccionado una celda. Son necesarias m;s( Case (ScCell<ange!b"( lSeguir % &rue Case (ScCell<anges!b"( 4sgbo0 (No se permite seleccionar 'arios rangos( Case 3lse 4sgbo0 (Seleccione un rango de celdas# por )a'or( 3nd Select , Si es un rango de celdas# leemos sus l9mites 6) lSeguir & en c$in % oSel.getColumns().getCount() H 1 )$in % oSel.get<ows().getCount() H 1 , <ecorremos las celdas y creamos la tabla c % (Itable style%,bacJgroundHcolor1Keaeaea:border1Ep0 solid KFFF:,LItbodyL( $or )ila % + &o )$in c % c 8 (ItrL( $or col % + &o c$in c % c 8 (Itd style%,border11p0 solid K>>>:,L( 8 oSel.getCell.yPosition(col#)ila).getString 8 (IMtdL( Ne0t , col c % c 8 (IMtrL( Ne0t , )ila c % c 8 (IMtbodyLIMtableL( 3nd6) SeleccionE&abla*&47 % c 3nd $unction

Ejemplo de tabla obtenida'

Tienda 1 Tienda 2 Tienda 3 Tienda 4

enero 100 120 140 160

febrero 101 121 141 161

marzo 102 122 142 162

E traer (R& y %e to de un )iperenlace


Sub 4ain() Dim cCrl As String# c&e0to As String Dim oCelda As !b"ect oCelda % & iscomponent.getCurrentSelection() 30trae_C<7_&e0to ( oCelda# cCrl# c&e0to ) 4sgbo0 (3l te0to es ( 8 c&e0to 4sgbo0 (7a C<7 es ( 8 cCrl 3nd Sub Sub 30trae_C<7_&e0to(oCelda As !b"ect# .yre) cCrl As String# .yre) c&e0to As String) , 30trae la url y el te0to de una celda Bue contiene un iperenlace Dim oCampos As !b"ect oCampos % oCelda.&e0t$ields 6) oCampos.Count L + & en oCampo % oCampos(+) 6) oCampo.C<7 L (( & en cCrl % oCampo.C<7 c&e0to % oCampo.<epresentation 3nd6) 3nd6) 3nd Sub

Das könnte Ihnen auch gefallen