Macro VBA Repetir acción hasta alcanzar el final del documento

Apprenti-InformatiChien Mensajes publicados 2 Fecha de registro   Estado Miembro Última intervención   -  
 Apprenti-InformatiChien -

Hello,
How to repeat the following macro in a loop with the stop condition reached end of document? I don’t master the Loop Until function well. Here is my code :

Sub NotesdeFin_MiseEnForme()
'
' NotesdeFin_MiseEnForme Macro
' Add brackets around endnote list number
'
    Selection.TypeText Text:="["
    Selection.MoveRight Unit:=wdWord, Count:=1
    Selection.TypeText Text:="]"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.TypeText Text:=" "
    Selection.MoveDown Unit:=wdParagraph, Count:=1

Loop Until

End Sub

Result, this formatting :
61. Voir note

is reformatted as follows with brackets around the number :

[62]. Mozart, Briefe..., op. cit., lettre du 18 janvier 1775 : I, p. 517 (I, p. 368).

Thanks in advance for your help !

JulienDébutant

4 respuestas

  1. JCB40 Mensajes publicados 3063 Fecha de registro   Estado Miembro Última intervención   479
     

    día

    Código para probar

     Sub NotesdeFin_MiseEnForme()' 'Notas de Fin_MiseEnForme Macro ' Añadir corchetes alrededor del número de la lista de notas al final del documento ' Dim doc As Document Set doc = ActiveDocument ' Colocar el cursor al inicio del documento Selection.HomeKey Unit:=wdStory ' Bucle hasta el final del documento Do Until Selection.End = doc.Content.End Selection.TypeText Text:="[" Selection.MoveRight Unit:=wdWord, Count:=1 Selection.TypeText Text:="]" Selection.MoveRight Unit:=wdCharacter, Count:=1 Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend Selection.TypeText Text:=" " Selection.MoveDown Unit:=wdParagraph, Count:=1 Loop End Sub

    0
  2. Apprenti-InformatiChien Mensajes publicados 2 Fecha de registro   Estado Miembro Última intervención  
     

    Hola,

    Gracias por su respuesta, lamentablemente el código propuesto no sirve porque el bucle nunca termina, lo que luego provoca que Word se bloquee. Aún no sé qué instrucción indicar para detener el bucle.

    0
  3. JCB40 Mensajes publicados 3063 Fecha de registro   Estado Miembro Última intervención   479
     

    código para probar de nuevo

     Sub NotesdeFin_MiseEnForme() ' NotesdeFin_MiseEnForme Macro ' Añadir corchetes alrededor del número de la lista de notas al final Dim doc As Document Dim rng As Range Set doc = ActiveDocument Set rng = doc.Content ' Desactivar la actualización de la pantalla y las notificaciones para mejorar el rendimiento Application.ScreenUpdating = False Application.DisplayAlerts = False ' Bucle a través de cada palabra del documento For i = 1 To rng.Words.Count If IsNumeric(rng.Words(i).Text) Then ' Añadir corchetes alrededor de la palabra rng.Words(i).Text = "[" & rng.Words(i).Text & "]" End If Next i ' Reactivar la actualización de la pantalla y las notificaciones Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub

    0
  4. Apprenti-InformatiChien
     
    < p>Muchas gracias por su respuesta.

    El código propuesto ahora en realidad crea dos corchetes alrededor de cada número, pero también alrededor de los números que pueden aparecer en la nota:

    [[1]]. Esto es verdad en [[1975]].

    Creo que por el momento voy a mantener mi primera macro creando un atajo para usarla rápidamente.

    No tengo aún las habilidades necesarias para crear un código que me convenga. Sigo estudiando.

    ¡Gracias de nuevo por su ayuda!

    0