Удалить страницы в Corel Draw, которых нет в массиве (макрос)

Случается в жизни, что есть файл Corel Draw cdr в котором очень много страниц. И эти страницы как-то названы. И необходимо удалить те из них, которые не соответствуют какому-то списку. Например, есть страницы Page1, Page2, Page3, Page4, Page5, Page6, Page7, а нам необходимо оставить в файле только необходимые — Page4, Page5 и Page6. Нам поможет следующий макрос:

Sub Macro1()

Dim p As Page
Dim i&

Dim arrNeedlePages() As String
Dim strFull As String

    strFull = "Page4,Page5,Page6"

    arrNeedlePages = Split(strFull, ",")

    For i = 1 To ActiveDocument.Pages.Count
        Set p = ActiveDocument.Pages(i)
        
        If Not IsInArray(p.Name, arrNeedlePages) Then
            p.Delete
        End If

    Next i

End Sub

Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
  IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function

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

Аватар пользователя rnr1721

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *