Note: The other languages of the website are Google-translated. Back to English

¿Cómo encontrar y resaltar párrafos duplicados en un documento de Word?

Supongamos que tiene un documento de Word grande que puede tener cientos de páginas, ahora, desea verificar si hay párrafos duplicados y luego resaltar para resaltarlos, de modo que pueda lidiar con las oraciones duplicadas. ¿Cómo podría encontrar y resaltar los párrafos duplicados rápida y fácilmente en un documento de Word?

Busque y resalte los párrafos duplicados en un documento de Word con código VBA


Busque y resalte los párrafos duplicados en un documento de Word con código VBA

Para encontrar y resaltar los párrafos duplicados en un documento de Word, el siguiente código VBA puede hacerle un favor, haga lo siguiente:

1. Mantenga pulsado el ALT + F11 teclas para abrir el Microsoft Visual Basic para aplicaciones ventana.

2. Y luego, haga clic en recuadro > Módulo, copie y pegue el código siguiente en el módulo en blanco abierto:

Código VBA: busque y resalte los párrafos duplicados en el documento de Word:

Sub highlightdup()
    Dim I, J As Long
    Dim xRngFind, xRng As Range
    Dim xStrFind, xStr As String
    Options.DefaultHighlightColorIndex = wdYellow
    Application.ScreenUpdating = False
    With ActiveDocument
        For I = 1 To .Paragraphs.Count - 1
            Set xRngFind = .Paragraphs(I).Range
            If xRngFind.HighlightColorIndex <> wdYellow Then
                For J = I + 1 To .Paragraphs.Count
                    Set xRng = .Paragraphs(J).Range
                    If xRngFind.Text = xRng.Text Then
                        xRngFind.HighlightColorIndex = wdBrightGreen
                        xRng.HighlightColorIndex = wdYellow
                    End If
                Next
            End If
        Next
    End With
End Sub

3. Y luego presione F5 clave para ejecutar este código, todas las oraciones duplicadas se resaltan a la vez, los primeros párrafos duplicados mostrados se resaltan con color verde y otros duplicados se resaltan con color amarillo, vea la captura de pantalla:

doc resaltar oraciones dobles 1


Herramientas de productividad de palabras recomendadas

 

Kutools para Word: más de 100 funciones avanzadas para Word, ahorre su 50% de tiempo

  • Las operaciones complicadas y repetidas se pueden realizar un solo procesamiento en segundos.
  • Inserte varias imágenes en carpetas en un documento de Word a la vez.
  • Fusiona y combina varios archivos de Word en carpetas en uno con el orden que desees.
  • Divida el documento actual en documentos separados según el encabezado, el salto de sección u otros criterios.
  • Convierta archivos entre Doc y Docx, Docx y PDF, colección de herramientas para conversiones y selección comunes, etc.
Comentarios (15)
4.5 clasificado de 5 · 1 calificaciones
Este comentario fue minimizado por el moderador en el sitio
Tentei e não funcionou, só da que parou de funcionar.
Este comentario fue minimizado por el moderador en el sitio
¡Lo intenté y funciona bien!
Solo quería saber, ¿podría hacer lo mismo, pero no un párrafo completo, sino una oración con unas pocas palabras que prepararía, como 10 palabras?
Este comentario fue minimizado por el moderador en el sitio
Lanza un error de compilación: error de sintaxis, el código es 100% como el ejemplo.
Este comentario fue minimizado por el moderador en el sitio
Hola

gracias por la ayuda

Pero, ¿cómo puedo encontrar las mismas oraciones en mi texto?

saludos
Este comentario fue minimizado por el moderador en el sitio
Hola



gracias por la ayuda



Pero, ¿cómo puedo encontrar las mismas oraciones en mi texto?



saludos
Este comentario fue minimizado por el moderador en el sitio
Tenía que procesar un documento muy largo, el código anterior tardaría al menos 100 días en finalizar y bloqueó todo mientras trabajaba en él. El principal culpable es el "Establecer xRng = .Paragraphs(J).Range", que es muy lento. Hice una versión alternativa que se ejecutó en solo 4 horas y presenta un informe continuo sobre el estado del procesamiento y el tiempo de finalización. (Para ver el informe en tiempo real, debe abrir la "ventana inmediata" presionando Ctrl+G en la ventana de Microsoft Visual Basic para aplicaciones). caso (depende del documento). El código es el siguiente:

Sub resaltado ()
Dim StartTime, segundos transcurridos como fecha
Dim segundos por comparación como doble
Dim I, J, PC, totalComparaciones, comparacionesListo, C, segundos para terminar mientras dure
Dim xRngFind, xRng como rango
Dim xStrg, minutesToFinish como cadena
Dim currentParag, nextParag como párrafo
'Opciones.DefaultHighlightColorIndex = wdYellow
Application.ScreenUpdating = False
Con ActiveDocument
Hora de inicio = ahora ()
C = 0
PC = .Párrafos.Recuento
comparacionestotales = CLng((PC * (PC + 1)) / 2)
Establezca currentParag = .Paragraphs(1)
Para I = 1 Para PC - 1
'Debug.Print "procesando el párrafo " & I & " de un total de " & PC & " " & currentParag.Range.Text
'Debug.Print Len(currentParag) & currentParag
Si currentParag.Range.HighlightColorIndex <> wdYellow Entonces
Si currentParag.Range.HighlightColorIndex <> wdBrightGreen Entonces
Establecer nextParag = currentParag
Para J = I + 1 Para PC
Establecer nextParag = nextParag.Next
Si currentParag.Range.Text = nextParag.Range.Text Entonces
currentParag.Range.HighlightColorIndex = wdBrightGreen
nextParag.Range.HighlightColorIndex = wdAmarillo
Debug.Print "¡¡Encontrado uno!! " & " I = " & I & " J = " & J & nextParag.Range.Text
Si terminar
Siguiente
Si terminar
Si terminar
DoEvents
comparacionesHechas = PC * (I - 1) + (J - I)
Segundos transcurridos = DateDiff("s", StartTime, Now())
segundos por comparación = CLng (segundos transcurridos) / comparaciones hechas
segundosParaFinalizar = CLng(segundosPorComparación * (comparacionestotales - comparacionesHechas))
minutosParaFinalizar = Formato(segundosParaFinalizar / 86400, "hh:mm:ss")
tiempo transcurrido = formato (segundos transcurridos / 86400, "hh: mm: ss")
Debug.Print "Párrafo de procesamiento terminado" & I & " de " & PC & ". Tiempo transcurrido = " & tiempo transcurrido & ". Tiempo hasta finalizar = " & minutesToFinish
Establezca currentParag = currentParag.Next
Siguiente
End With
End Sub
Este comentario fue minimizado por el moderador en el sitio
Señor, amablemente gracias y tenga buenos vientos en su vida.
Este comentario fue minimizado por el moderador en el sitio
muchas gracias, funciona perfectamente y muy rapido!

Pablo (de Francia)
Este comentario fue minimizado por el moderador en el sitio
Gracias, ya me salvaste el día dos veces. Este trabajo como magia.
Este comentario fue minimizado por el moderador en el sitio
¡Hola! Muchas gracias por este código. Cuando intenté usarlo por primera vez, hubo un error de sintaxis que seguía apareciendo. Pero, al mirar el código anterior y este código, encontré una manera de hacerlo funcionar y pensé que podría ayudar a alguien más: (Simplemente siga las instrucciones anteriores, pero copie y pegue esto en su lugar) si encuentra que el suyo tiene un Error de sintaxis como el mío.

PC = .Párrafos.Recuento
comparacionestotales = CLng((PC * (PC + 1)) / 2)
Establezca currentParag = .Paragraphs(1)
Para I = 1 Para PC - 1
'Debug.Print "procesando el párrafo " & I & " de un total de " & PC & " " & currentParag.Range.Text
'Debug.Print Len(currentParag) & currentParag
Si currentParag.Range.HighlightColorIndex <> wdYellow Entonces
Si currentParag.Range.HighlightColorIndex <> wdBrightGreen Entonces
Establecer nextParag = currentParag
Para J = I + 1 Para PC
Establecer nextParag = nextParag.Next
Si currentParag.Range.Text = nextParag.Range.Text Entonces
currentParag.Range.HighlightColorIndex = wdBrightGreen
nextParag.Range.HighlightColorIndex = wdAmarillo
Debug.Print "¡¡Encontrado uno!! " & amp; " yo = " &amp; yo &amp; " J = " &amperio; J & amplificador; nextParag.Range.Text
Si terminar
Siguiente
Si terminar
Si terminar
DoEvents
comparacionesHechas = PC * (I - 1) + (J - I)
Segundos transcurridos = DateDiff("s", StartTime, Now())
segundos por comparación = CLng (segundos transcurridos) / comparaciones hechas
segundosParaFinalizar = CLng(segundosPorComparación * (comparacionestotales - comparacionesHechas))
minutosParaFinalizar = Formato(segundosParaFinalizar / 86400, "hh:mm:ss")
tiempo transcurrido = formato (segundos transcurridos / 86400, "hh: mm: ss")
Debug.Print "Párrafo de procesamiento terminado" & amp; yo &amp; " de " &amp; PC y amperio; ". Tiempo transcurrido = " &amp; tiempo transcurrido &amp; ". Hora de terminar = " & amp; minutos para terminar
Establezca currentParag = currentParag.Next
Siguiente
End With
End Sub
4.5 clasificado de 5
Este comentario fue minimizado por el moderador en el sitio
Intenté esto para mi libro en MS Word. Primero, no funcionaría porque tenía viñetas. Los eliminé y luego solo encontré 2 instancias "página en blanco" y "tabla de contenido". Deliberadamente tengo varias oraciones repetidas, y esta macro no las encontró. Gracias por intentarlo, pero yo diría que esto no funciona.
Este comentario fue minimizado por el moderador en el sitio
Muchas gracias. ¡Un artículo muy valioso, me ayudó con mis párrafos duplicados para copiar y pegar! Eres increíble.
Este comentario fue minimizado por el moderador en el sitio
Hola, ¿alguien puede sugerirme que prepare una macro en MS Word para encontrar un error en el párrafo?
Como: - "y o" "que eso" "del de" "La oración termina sin punto (.)" "La nueva oración comienza con mayúsculas iniciales sin terminar el envío".
Este comentario fue minimizado por el moderador en el sitio
Hola, mình chạy đoạn code trên nhưng không thấy ra kết quả giống bài viết, mình dùng word 2019, Ad support giúp mình nhé 
Este comentario fue minimizado por el moderador en el sitio
me pueden ayudar no funciona me pueden ayudarhttps://1drv.ms/w/s!Aja8bo-tfhqb-FVWcGUyvYPv07cX?e=lgJ4i1
No hay comentarios publicados aquí todavía
Deje sus comentarios
Publicar como invitado
×
Califica esta publicación:
0   Personajes
Ubicaciones sugeridas

Siganos

Copyright © 2009 - www.extendoffice.com. | Reservados todos los derechos. Energizado por ExtendOffice, | Mapa del Sitio
Microsoft y el logotipo de Office son marcas comerciales o marcas comerciales registradas de Microsoft Corporation en los Estados Unidos y / o en otros países.
Protegido por Sectigo SSL