MS Word и VBA: удаление нескольких страниц по заданному условию

 25 декабря 2015, пятница Владимир  3939




Приветствую тебя! Здесь я поделюсь макросом для массового удаления страниц по заданному условию из документа MS Word. Чтобы воспользоваться данным пособием необходимо иметь начальное представление о макросах и редакторе Visual Basic for Application. Показывать буду на своем примере, который возник у меня на работе (социальная сфера).

MS Word и VBA: удаление нескольких страниц по заданному условию

Из соседнего отдела обратились ко мне с такой просьбой: нужно было удалить из документа MS Word, в котором насчитывалось более тысячи страниц (!), ненужные страницы. Документ содержал индивидуальные выписки на людей. Условие для удаления было следующим: требовалось удалить выписки, у которых значение "ЕВДП" на последней таблице равно нулю. Надо сказать что для открытия такого большого документа необходима была хорошая рабочая станция с большим объемом оперативной памяти. Это у меня было.. Ну а дальше - время для написания макроса.

Так выглядит документ:

MS Word и VBA: удаление нескольких страниц по заданному условию

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

MS Word и VBA: удаление нескольких страниц по заданному условию

Исходный текст макроса:

Sub jumred()
Dim S As Section
For Each S In ActiveDocument.Range.Sections
DEL = True
TableCount = S.Range.Tables.Count
If TableCount >= 5 Then
R = S.Range.Tables(TableCount).Rows.Count
C = S.Range.Tables(TableCount).Columns.Count
If (Mid(S.Range.Tables(TableCount).Cell(R - 1, 3).Range, 1, 4) = "ЕВДП") And (Val(S.Range.Tables(TableCount).Cell(R - 1, C).Range) > 0) Then
DEL = False
End If
End If
If DEL Then S.Range.Delete
Next
MsgBox "Выполнено полностью", vbInformation
End Sub

Здесь в цикле перебираются все разделы в документе, а затем идет обращение к нужно таблице и ячейке. Макрос нужно вставить в документ через редактор Visual Basic for Application (открывается при помощи горячей клавиши Alt - F11). Запуск макроса осуществляется клавишей F5. По окончании работы макроса появится информационное окно, которое оповещает об успешном завершении.

MS Word и VBA: удаление нескольких страниц по заданному условию

На моей машине макрос работал всего лишь несколько минут.