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]

Responder a