Как удалить из презентации PowerPoint слайды, соответствующие определённому условию
Есть презентация PowerPoint. Нужно пройти по слайдам презентации и найти слайды, содержащие таблицу из одной строки. Такие слайды надо удалить
P.S. Простите за такой тупой вопрос, пожалуйста, но у меня проект на 50 000 строк, полный говонокода. Писала этот проект не я. Там генерится автоматически презентация, в которой появляются бракованные слайды. Я блин три причины нашла, по которым они могут появляться, и все исправила. А они всё появляются! Фиксить надо срочно, я уже не соображаю( Простите
Ответы (2 шт):
Автор решения: Алексей Р
→ Ссылка
Sub del_slides_one_table_row()
Set Slides = ActivePresentation.Slides
For i = Slides.Count To 1 Step -1 ' перебираем слайды задом наперед, чтобы их удаление не меняло индексы еще не обработанных слайдов
Set Slide = ActivePresentation.Slides(i)
tables_count = 0
table_one_row = False
For Each Shape In Slide.Shapes ' перебираем фигуры на слайде
If Shape.HasTable Then ' есть ли в фигуре таблица?
tables_count = tables_count + 1
table_one_row = Shape.Table.Rows.Count = 1
End If
Next
If tables_count = 1 And table_one_row Then Slide.Delete ' если на слайде ровно 1 таблица и в ней 1 строка, удаляем слайд
Next
End Sub
Автор решения: Fox Fox
→ Ссылка
Sub DeleteSlidesWithSingleRowTable()
Dim slide As slide
Dim shape As shape
Dim table As table
For Each slide In ActivePresentation.Slides
For Each shape In slide.Shapes
If shape.HasTable Then
Set table = shape.Table
If table.Rows.Count = 1 Then
slide.Delete
Exit For
End If
End If
Next shape
Next slide
End Sub