VBA: удалить все слайды (в PPT), кроме определенных - PullRequest
0 голосов
/ 28 сентября 2018

Я выполняю код через Excel и хотел бы удалить все слайды в моем PPT, кроме слайдов 1, 2, 3 и 17. Кажется, я не могу заставить его работать.

Вот фрагмент, который удаляет все слайды в презентации, как может быть реализовано исключение?

    For i = ppApp.ActivePresentation.Slides.Count To 2 Step -1
             ppApp.ActivePresentation.Slides(i).Delete
    Next

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

Сделайте снимок:

For i = ppApp.ActivePresentation.Slides.Count To 4 Step -1
  If I <> 17 then
    ppApp.ActivePresentation.Slides(i).Delete
  End If
Next

Это удалит все, кроме этих 4 слайдов, независимо от того, сколько вы начали.Останавливая цикл на слайде № 4, вы даже не рассматриваете слайды 1, 2 или 3, поэтому вам не нужно проверять, чтобы убедиться, что вы не удаляете их.

ПРИМЕЧАНИЕ: При тестировании кода, который удаляет вещи, всегда убедитесь, что у вас есть резервная копия того, что вы удаляете из , на всякий случай ...

0 голосов
/ 28 сентября 2018

Попробуйте:

Dim arrSheetsToKeep As Variant
arrSheetsToKeep = Array(1, 2, 3, 17)    

For i = ppApp.ActivePresentation.Slides.Count To 1 Step -1

    If IsError(Application.Match(i, arrSheetsToKeep, False)) Then

             ppApp.ActivePresentation.Slides(i).Delete

    End If        
Next

Просто заполните arrSheetsToKeep листами, которые вы хотите сохранить.

0 голосов
/ 28 сентября 2018

Проще всего было бы переместить слайд 17 в положение 4, а затем сделать следующее:

Do While ppApp.ActivePresentation.Slides.Count > 4
        ppApp.ActivePresentation.Slides(5).Delete
    Loop

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...