मुझे अनुच्छेदों द्वारा पाठ को संसाधित करने की आवश्यकता है। अगला उदाहरण एक पैराग्राफ़ लेने और उसके अंतिम वर्ण - अनुच्छेद वर्ण को हटाने को दर्शाता है। फिर मैं इस पाठ को संसाधित करता हूं और पुराने पाठ को एक नए से बदलने का प्रयास करता हूं। समस्या यह है कि यह अनंत लूप में चला जाता है और Word को जमा देता है।

Sub Parser()
    For Each para In ActiveDocument.Paragraphs
        If Len(para.Range.Text) >= 150 Then
            
            CleanedString = Left(para.Range.Text, Len(para.Range.Text) - 1)
            'Some proccessing here
            para.Range.Text = CleanedString & vbCr
        End If
    Next
End Sub

मैंने सभी अनुच्छेदों को हटाने और प्रसंस्करण के बाद उन्हें वापस रखने का भी प्रयास किया, लेकिन यह भी विफल रहा।

0
Voilin 2 पद 2020, 22:25

2 जवाब

सबसे बढ़िया उत्तर

सही समाधान निकट था, धन्यवाद @freeflow। मुझे इसे With में लपेटने की सख्त जरूरत थी

For Each para In ActiveDocument.Paragraphs
    If Len(para.Range.Text) >= 150 Then
        With para.Range
            .MoveEnd Unit:=wdCharacter, Count:=-1
            NewText = .Text
            .Text = NewText
        End With
    End If
Next
0
Voilin 5 पद 2020, 22:52

यह एक अनंत लूप है क्योंकि आप अपने टेक्स्ट के अंत में एक नया पैराग्राफ जोड़ रहे हैं। नतीजतन हर बार जब आप एक स्ट्रिंग को संसाधित करते हैं तो दस्तावेज़ को 1 पैराग्राफ लंबा मिलता है। पाठ को संसाधित करने से पहले सीमा को समायोजित करने के लिए चाल है।

Sub Parser()
    For Each para In ActiveDocument.Paragraphs

        para.range.moveend unit:=wdcharacter, count =-1
        If Len(para.Range.Text) >= 150 Then
            
            CleanedString = para.Range.Text
            'Some proccessing here
            para.Range.Text = CleanedString
        End If
    Next
End Sub
1
Community 3 पद 2020, 02:27