Как удалить абзацы определенного языка? - PullRequest
0 голосов
/ 28 января 2019

Итак, я хочу удалить только текст на упрощенном китайском языке в документе на английском и китайском языках.Документы не имеют какого-либо установленного шаблона, для которого абзацы и на каком языке.

Я попробовал код ниже, но продолжаю получать ошибки.Я пробовал несколько версий кода, который выполняет поиск по абзацу и по языку, но, похоже, я не могу заставить его работать.

Sub DeleteCN()
    iParCount = ActiveDocument.Paragraphs.Count
    For J = 1 To iParCount
        sMyPar = ActiveDocument.Paragraphs(J).Range.Text
        If sMyPar.WdLanguageID = wdSimplifiedChinese Then
            sMyPar.Delete
        End If
    Next J
End Sub

В идеале код удалит большинство китайских абзацев издокумент, если не все.Однако ошибка, которую я получаю с этой последней попыткой, заключается в том, что в строке If требуется объект.

Возможно, я неправильно понял что-то действительно фундаментальное, поэтому любая помощь будет принята с благодарностью:)

1 Ответ

0 голосов
/ 28 января 2019

У вас есть несколько проблем с вашим кодом.

1) Самое серьезное, что вы должны поменять цикл.Цикл необходимо поменять местами, потому что при удалении абзаца количество абзацев будет динамически изменяться, и тогда будущие абзацы больше не будут существовать.

2) Остальные ошибки синтаксиса, вы можете увидеть, где был обновлен синтаксисв коде.Если вы объявите свои переменные, вам будет проще узнать правильный синтаксис.

Sub DeleteCN()

Dim iParaCount As Integer
Dim para As Paragraph

iParaCount = ActiveDocument.Paragraphs.Count

For J = iParaCount To 1 Step -1
    Set para = ActiveDocument.Paragraphs(J)
    If para.Range.LanguageID = wdSimplifiedChinese Then
        para.Range.Delete
    End If
Next J

End Sub

Надеюсь, это поможет.

...