es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo limitar el procedimiento de buscar y reemplazar para que se ejecute solo en ciertas páginas?

Estoy utilizando Microsoft Visual Basic en Word. Quiero limitar la función de buscar y reemplazar para que solo funcione en ciertas páginas del documento. ¿Cómo lo hago?

Hasta ahora, se ejecuta en todo el documento, lo cual no es preferible.

Sub X_entity()
'
' Reemplaza los símbolos de mayor y menor que por entidades html
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = ">"
        .Replacement.Text = ">"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "<"
        .Replacement.Text = "<"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para limitar la función de buscar y reemplazar para que solo funcione en ciertas páginas del documento, puedes utilizar el objeto integrado “Page” en el Modelo de Objetos de Microsoft Word.

    Aquí tienes un ejemplo de código que limita la función de buscar y reemplazar para que solo funcione en las primeras dos páginas del documento:

    Sub BuscarYReemplazarEnCiertasPáginas()
    '
    ' Buscar y reemplazar en ciertas páginas del documento
    '
        Dim doc As Document
        Set doc = ActiveDocument
    
        ' Establecer las páginas a buscar
        Dim pageRange As Range
        Set pageRange = doc.Range(Start:=doc.GoTo(What:=wdGoToPage, Name:=1).Start, _
                                    End:=doc.GoTo(What:=wdGoToPage, Name:=2).End)
    
        ' Buscar y reemplazar dentro del rango de la página
        pageRange.Find.ClearFormatting
        pageRange.Find.Replacement.ClearFormatting
        With pageRange.Find
            .Text = ">"
            .Replacement.Text = ">"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        pageRange.Find.Execute Replace:=wdReplaceAll
        With pageRange.Find
            .Text = "<"
            .Replacement.Text = "<"
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        pageRange.Find.Execute Replace:=wdReplaceAll
    End Sub
    

    En este código, primero establecemos el rango de páginas a buscar utilizando el método doc.GoTo, que toma un número de página o un elemento con nombre (como wdGoToPage) como argumento. Luego creamos un nuevo objeto Range con los puntos de inicio y finalización del rango de páginas.

    Luego, realizamos la operación de buscar y reemplazar dentro del rango de la página utilizando la propiedad pageRange.Find, que es igual a Selection.Find pero opera en un rango específico. También ejecutamos la búsqueda y reemplazo dos veces, primero para el símbolo “>” y luego para el símbolo “<“.

    Nota que puedes modificar el rango de páginas cambiando los números de página en el método doc.GoTo. Por ejemplo, puedes buscar desde la página 3 hasta la página 5 cambiando Name:=1 y Name:=2 a Name:=3 y Name:=5, respectivamente.

Comments are closed.