On Tue, 01 Nov 2005 13:35:49 -0000, Alexandro Colorado
<[EMAIL PROTECTED]> wrote:
Intenta esta macro, Andrew Pitoyak me ayudo con este script aunque todavia
hay que pulirlo:
' Declaracion de variables
Dim oSels
Dim oSel
Dim oCurs
Dim oEnum
Dim oField
Dim oNewField
Dim oMasters
Dim oDFields()
Dim sName
Dim x
Dim i%
Dim s$
Dim sExprName
Dim sNewName
Dim oText
Dim oAnchor
Dim oParenMField
Dim oNewMField
' Se ejecuta la opcion en base a la seleccion
oSels = ThisComponent.getCurrentSelection()
If oSels.getCount() <> 1 Then
Print "Select a single region"
Exit Sub
End If
' Tomar la informacion de la seleccion
oSel = oSels.getByIndex(0)
oText = oSel.getText()
oCurs = oText.createTextCursorByRange(oSel)
If oCurs.isCollapsed() Then
Print "Select a single region"
Exit Sub
End If
sExprName = "com.sun.star.text.FieldMaster.SetExpression"
sName = "Paren"
sName = "Blah"
sNewName = sExprName & "." & sName
oMasters = ThisComponent.getTextFieldMasters()
If oMasters.hasByName(sNewName) Then
oNewMField = oMasters.getByName(sNewName)
Else
oNewMField = ThisComponent.createInstance(sExprName)
oNewMField.Name = sName
oNewMField.SubType = 1
End If
oDFields() = oNewMField.DependentTextFields
' Aqui usamos campos (insertar campos) para imprimir el numero
REM First, remove all existing fields.
For i = LBound(oDFields()) To UBound(oDFields())
oField = oDFields(i)
oAnchor = oField.getAnchor()
If oText.compareRegionStarts(oAnchor, oCurs) <= 0 AND _
oText.compareRegionEnds(oAnchor, oCurs) >= 0 Then
oField.dispose()
End If
Next
' POR FIN -- El contador :)
Dim nCount As Long
nCount = 0
REM Now, add new fields.
oEnum = oSel.createEnumeration()
Do While oEnum.hasMoreElements
oPar = oEnum.nextElement()
If oPar.supportsService("com.sun.star.text.Paragraph") Then
nCount = nCount + 1
If nCount MOD 5 = 0 Then
oField =
ThisComponent.createInstance("com.sun.star.text.TextField.SetExpression")
If nCount = 5 Then
oField.Content = "5"
Else
oField.Content = sName & "+5"
End If
oField.NumberFormat = 4
oField.NumberingType = 4
oField.attachTextFieldMaster(oNewMField)
oCurs.gotoRange(oPar.getEnd(), False)
oText.insertTextContent(oCurs, oField, False)
End If
End If
Loop
Como vez el codigo es un tanto verboso pero eso es por que queremos que no
te de los numeros de todo el documento sino solamente de la seleccion.
Estaremos puliendo el script pero esto te puede dar la idea de lo
necesario. La mayoria son variables de 'muestra' para entender mejor el
comportamiento del script.
--
Alexandro Colorado
CoLeader of OpenOffice.org ES
http://es.openoffice.org
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]