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

Hur hittar och markerar du dubbla stycken i Word-dokument?

Om du antar att du har ett stort Word-dokument som kan ha hundratals sidor, nu vill du kontrollera om det finns dubbla stycken och markera sedan för att göra dem enastående, så att du kan hantera dubbla meningar. Hur kunde du hitta och markera de dubbla styckena snabbt och enkelt i Word-dokument?

Hitta och markera de dubbla styckena i Word-dokument med VBA-kod


Hitta och markera de dubbla styckena i Word-dokument med VBA-kod

För att hitta och markera de dubbla styckena i ett Word-dokument kan följande VBA-kod göra dig en tjänst, gör så här:

1. Håll ner ALT + F11 nycklar för att öppna Microsoft Visual Basic för applikationer fönster.

2. Och klicka sedan på Insert > Modulerna, kopiera och klistra in koden nedan i den öppnade tomma modulen:

VBA-kod: Hitta och markera de dubbla styckena i Word-dokument:

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. Och tryck sedan på F5 nyckel för att köra den här koden, alla dubbla meningar markeras på en gång, de första visade duplicerade styckena är markerade med grön färg och andra dubbletter markeras med gul färg, se skärmdump:

doc markera dup meningar 1


Rekommenderade Word-produktivitetsverktyg

 

Kutools för Word - Mer än 100 avancerade funktioner för Word, spara 50% tid

  • Komplicerade och upprepade operationer kan göras engångsbehandling på några sekunder.
  • Infoga flera bilder över mappar i Word-dokumentet samtidigt.
  • Slå ihop och kombinera flera Word-filer över mappar till en med önskad ordning.
  • Dela upp det aktuella dokumentet i separata dokument enligt rubrik, avsnittbrytning eller andra kriterier.
  • Konvertera filer mellan Doc och Docx, Docx och PDF, samling verktyg för vanliga konverteringar och val, och så vidare ...
Sortera kommentarer efter
Kommentarer (15)
Klassad 4.5 av 5 · 1 betyg
Denna kommentar minimerades av moderatoren på webbplatsen
Tentei e não funcionou, so da que parou de funcionar.
juliana
Denna kommentar minimerades av moderatoren på webbplatsen
Jag försökte, och det fungerar bra!
Jag ville bara veta - kunde jag göra samma sak - men inte ett helt stycke, utan en mening med några ord som jag skulle sätta upp - typ 10 ord?
dvid
Denna kommentar minimerades av moderatoren på webbplatsen
Det ger kompileringsfel: Syntaxfel, koden är 100% som exemplet.
Alex
Denna kommentar minimerades av moderatoren på webbplatsen
Hej

Tack för hjälpen

Men hur kan jag hitta samma meningar i min text?

Hälsningar
Helen
Denna kommentar minimerades av moderatoren på webbplatsen
Hej



Tack för hjälpen



Men hur kan jag hitta samma meningar i min text?



Hälsningar
Helen
Denna kommentar minimerades av moderatoren på webbplatsen
Jag hade ett mycket långt dokument att bearbeta, koden ovan skulle ta minst 100 dagar att slutföra och blockerade allt medan jag arbetade med den. Den främsta boven är "Set xRng = .Paragraphs(J).Range" som är väldigt långsam. Jag gjorde en alternativ version som kördes på bara 4 timmar och presenterar en kontinuerlig rapport om bearbetningsstatus och tid till slut. (För att se rapporten i realtid måste du öppna det "omedelbara fönstret" genom att trycka på Ctrl+G i Microsoft Visual Basic for Applications-fönstret.) Koden fungerar bra, förutom att den förutsäger en längre tid till slut än vad som faktiskt är fall (beror på dokumentet). Koden är som följer:

Sub highlightdup()
Dim starttid, sekunder förflutit som datum
Dim sekunder per jämförelse som dubbel
Dim I, J, PC, totalt Jämförelser, jämförelserKlar, C, sekunderToFinish As Long
Dim xRngFind, xRng As Range
Dim xStrg, minutesToFinish As String
Dim currentParag, nextParag As Paragraph
'Options.DefaultHighlightColorIndex = wdYellow
Application.ScreenUpdating = False
Med ActiveDocument
Starttid = Nu()
C = 0
PC = .Paragraphs.Count
totalComparisons = CLng((PC * (PC + 1)) / 2)
Ställ in currentParag = .Paragraphs(1)
För I = 1 Till PC - 1
"Debug.Print "bearbetar stycke " & I & " av totalt " & PC & " " & aktuellParag.Range.Text
'Debug.Print Len(currentParag) & currentParag
Om currentParag.Range.HighlightColorIndex <> wdYellow Då
Om currentParag.Range.HighlightColorIndex <> wdBrightGreen Då
Sätt nästaParag = aktuellParag
För J = I + 1 Till PC
Ställ in nextParag = nextParag.Next
Om currentParag.Range.Text = nextParag.Range.Text Då
currentParag.Range.HighlightColorIndex = wdBrightGreen
nextParag.Range.HighlightColorIndex = wdYellow
Debug.Print "hittade en!! " & " I = " & I & " J = " & J & nextParag.Range.Text
End If
Nästa
End If
End If
GörEvents
jämförelser Klar = PC * (I - 1) + (J - I)
SecondsElapsed = DateDiff("s", StartTime, Now())
secondsPerComparison = CLng(SecondsElapsed) / comparionsDone
secondsToFinish = CLng(secondsPerComparison * (totalComparisons - comparisonsDone))
minutesToFinish = Format(secondsToFinish / 86400, "hh:mm:ss")
elapsedTime = Format(SecondsElapsed / 86400, "hh:mm:ss")
Debug.Print "Finished processing section " & I & " of " & PC & ". Elapsed time = " & elapsedTime & ". Time to finish = " & minutesToFinish
Ställ in currentParag = currentParag.Next
Nästa
Sluta med
End Sub
Peter
Denna kommentar minimerades av moderatoren på webbplatsen
Sir, vänligt tack och ha goda vindar i ditt liv.
Emmanouil
Denna kommentar minimerades av moderatoren på webbplatsen
tack så mycket, det fungerar perfekt och väldigt snabbt!

Paul (från Frankrike)
</div>
mask de stol
Denna kommentar minimerades av moderatoren på webbplatsen
Tack, du räddade min dag redan två gånger. Det här fungerar som magi.
dideku
Denna kommentar minimerades av moderatoren på webbplatsen
Hallå där! Tack så mycket för den här koden. När jag först försökte använda det var det ett syntaxfel som hela tiden dyker upp. Men när jag tittade på ovanstående kod och den här koden hittade jag ett sätt att få det att fungera och jag tänkte att det kan hjälpa någon annan: (Följ bara instruktionerna ovan men kopiera och klistra in det istället) om du upptäcker att din har en Syntaxfel som mitt.

PC = .Paragraphs.Count
totalComparisons = CLng((PC * (PC + 1)) / 2)
Ställ in currentParag = .Paragraphs(1)
För I = 1 Till PC - 1
"Debug.Print "bearbetar stycke " & I & " av totalt " & PC & " " & aktuellParag.Range.Text
'Debug.Print Len(currentParag) & currentParag
Om currentParag.Range.HighlightColorIndex <> wdYellow Då
Om currentParag.Range.HighlightColorIndex <> wdBrightGreen Då
Sätt nästaParag = aktuellParag
För J = I + 1 Till PC
Ställ in nextParag = nextParag.Next
Om currentParag.Range.Text = nextParag.Range.Text Då
currentParag.Range.HighlightColorIndex = wdBrightGreen
nextParag.Range.HighlightColorIndex = wdYellow
Debug.Print "hittade en!!" & amp; " I = " & amp; Jag & amp; " J = " & amp; J & amp; nextParag.Range.Text
End If
Nästa
End If
End If
GörEvents
jämförelser Klar = PC * (I - 1) + (J - I)
SecondsElapsed = DateDiff("s", StartTime, Now())
secondsPerComparison = CLng(SecondsElapsed) / comparionsDone
secondsToFinish = CLng(secondsPerComparison * (totalComparisons - comparisonsDone))
minutesToFinish = Format(secondsToFinish / 86400, "hh:mm:ss")
elapsedTime = Format(SecondsElapsed / 86400, "hh:mm:ss")
Debug.Print "Finished processing section" & amp; Jag & amp; " av " & amp; PC & amp; ". Förfluten tid = " & amp; förfluten tid & amp; ". Dags att avsluta = " & amp; minutesToFinish
Ställ in currentParag = currentParag.Next
Nästa
Sluta med
End Sub
Emilia B
Klassad 4.5 av 5
Denna kommentar minimerades av moderatoren på webbplatsen
Testade detta för min bok i MS Word. För det första skulle det inte fungera eftersom jag hade kulpunkter. Jag tog bort dem och då hittade den bara 2 instanser "tom sida" och "innehållsförteckning". Jag har medvetet upprepat flera meningar, och det här makrot hittade dem inte. Tack för att du försökte, men jag skulle säga att det här inte fungerar.
</div>
Tom
Denna kommentar minimerades av moderatoren på webbplatsen
Tack så mycket. En mycket värdefull artikel, hjälpte mig med mina dubbletter och klistra in stycken! Du är fantastisk.
Deitsa
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, kan någon föreslå mig att förbereda ett makro i ms word för att hitta fel i stycket.
Tycka om:- "och eller" "att det" "av den av" "Meningen slutar utan punkt (.)" "Ny mening börjar med initiala bokstäver utan att avsluta sändningen".
Hård
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, 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, Annonsstöd giúp mình nhé 
vicky
Denna kommentar minimerades av moderatoren på webbplatsen
Kan du hjälpa mig att det inte fungerar kan du hjälpahttps://1drv.ms/w/s!Aja8bo-tfhqb-FVWcGUyvYPv07cX?e=lgJ4i1
</div>
Destini Brodi
Det finns inga kommentarer här ännu
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0  Tecken
Föreslagna platser