2013-10-03 2 views
0

enter image description here Я хотел бы удалить определенные строки из документа Word, используя макрос VBA. В основном текст (блок), который нужно удалить (и заменяется на «***»), следует за определенным шаблоном (ниже).Удаление определенных строк в ms word 2007

Bottom of Form 
perma-link 

Top of Form 
save 
Bottom of Form 
[+] .... 
[–] .... 
Top of Form 

"...." представляет собой текст, который меняется каждый блок, но уверен, что строка начинается с "[+]" или "[-]".

Пожалуйста, предложите подходящий макрос

EDIT: На скриншоте, я хотел бы сохранить текст в желтый и удалить остальные. (в фактическом файле текст не находится в желтом цвете)

PS-FYI, я попытался использовать пример looping a find and delete row macro (для удаления строки за строкой), но я получаю ошибку времени выполнения 5941 с опцией отладки, выделяющей строку «выбор» .row.delete "в макросе.

Что это значит?

+0

'selection.row.delete' будет работать только для таблиц, которые вы не имеете, я думаю. Я не получаю образец, который вы пытались представить, - что нужно заменить. Не могли бы вы добавить некоторые снимки экрана или более подробную информацию? –

+0

Спасибо за ваш ответ, @ Kasjow. Хорошо, позвольте мне задать более простой вопрос: как индивидуально удалять строки, начинающиеся с определенной строки? –

+0

строк вы имеете в виду абзацы? поэтому каждая строка является абзацем ... –

ответ

1

Предполагая, что список примеров представляет собой список начальных абзацев, следующий код должен сделать трюк. То, что вам нужно сделать, это поместить все «начальные абзацы» в массив arrRemove так же, как я сделал для теста. Если какой-либо знак является специальными знаками (см. this link for additional information), перед ним нужно добавить \, как и для [+] и [-]. Надеюсь, это то, что вы ищете.

Sub Macro2() 

    Dim arrRemove As Variant 
     arrRemove = Array("Bottom of Form", "perma -link", "Top of Form", _ 
        "\[+\]", "\[\-\]", "Donec", "In") 

    Dim i! 
    For i = 0 To UBound(arrRemove) 
     Activedocument.Range(0,0).select 

     Selection.Find.ClearFormatting 
     With Selection.Find 
      .Text = arrRemove(i) & "*^13" 
      .Replacement.Text = "" 'replace with nothing 

      .Forward = True 
      .Wrap = wdFindContinue 
      .MatchCase = False 
      .MatchWildcards = True 
     End With 
     Selection.Find.Execute Replace:=wdReplaceAll 

    Next i 

End Sub 

Вышеуказанный макрос удалит весь желтый абзац в следующем документе.

enter image description here

+0

Я добавил скриншот для вашего удобства –

Смежные вопросы