Как удалить абзацы на определенном языке?

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

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

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 требуется объект.


person millman97    schedule 27.01.2019    source источник
comment
Очень хороший первый вопрос. Вы были ясны и лаконичны и включили пример кода!   -  person Kevin    schedule 28.01.2019


Ответы (1)


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

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

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

person Kevin    schedule 27.01.2019