Последнее обновление: июнь 2020 г.
Применимо к: Office 2019 и более ранним версиям. Только Windows.
Вот вопрос от читателя:
В рамках презентации ежеквартального отчета руководству мне часто приходится копировать несколько слайдов с общей информацией из других презентаций. Ничего страшного, но было бы здорово сэкономить, если бы можно было автоматизировать это упражнение. Любая помощь VBA Macro для достижения этой цели приветствуется!
Как вы только что упомянули, вы можете автоматизировать копирование и вставку слайдов в PowerPoint с помощью Visual Basic для приложений. Если вам нужно создавать несколько презентаций каждый месяц, эта автоматизация копирования / импорта слайдов может значительно сэкономить время!
PowerPoint VBA для добавления слайдов
Давайте приступим к этому простому упражнению.
Во-первых, убедитесь, что ваша вкладка разработки включена и видна. Вот как это сделать .
Я предполагаю, что вы уже создали презентацию с поддержкой макросов (тип файла .pptm), которую вы поместили в тот же каталог, что и исходная презентация (которую я буду называть source.pptm). Вот как создать презентацию PowerPoint с помощью VBA .
Во-первых, давайте сделаем резервную копию этой презентации (просто скопируйте и сохраните).
Затем давайте продолжим и вставим следующий макрос в новый модуль VBA в целевой презентации. Все подробности о том, как это сделать, можно найти в нашем руководстве по PowerPoint VBA .
Вот код VBA, который вам понадобится для автоматического копирования и вставки слайдов.
Пара предположений, которые я сделал:
- Ваша исходная презентация называется source.pptm.
- Вы вставите слайды 2–4 из исходной презентации.
- Вы разместите скопированные слайды, начиная со слайда 5.
Sub InsertFromOtherPres()
' This short VBA macro copies slides from one presentation and inserts them into another
ActivePresentation.Slides.InsertFromFile FileName:="source.pptm", Index:=1, SlideStart:=2,
SlideEnd:=4
End Sub
Очевидно, вы можете свободно изменять индексацию номеров слайдов в коде, чтобы они соответствовали вашим требованиям.
Вы можете просмотреть несколько презентаций и вставить определенные слайды из каждой в свой управленческий отчет.
PowerPoint VBA для дублирования слайдов
Вместо копирования слайдов в другую презентацию вы можете клонировать один или несколько слайдов в своей презентации:
Sub CopySlides()
' Short snippet to duplicate the third slide in a presentation, change the index/es accrodingly
ActivePresentation.Slides(3).Duplicate
End Sub
Это была всего лишь пара простых примеров автоматизации PowerPoint. Читатели, которым нужны конкретные вопросы, могут отправить запрос через страницу контактов.
Надеюсь, это поможет 🙂
Сохранять форматирование при копировании слайдов
Проблема с предыдущим примером заключалась в том, что исходное форматирование темы презентаций не копировалось. Предположим, что два листа имеют разное форматирование, вот что произошло бы:
Пример 1
| |
Sub main()
Dim objPresentation As Presentation
Dim i As Integer
'open the target presentation
Set objPresentation = Presentations.Open("C:\2.pptx")
For i = 1 To objPresentation.Slides.Count
objPresentation.Slides.Item(i).Copy
Presentations.Item(1).Slides.Paste
Next i
objPresentation.Close
End Sub
|

Это презентация со слайдом, который мы хотим скопировать:
Результат:
Чтобы решить эту проблему, вы можете использовать приведенный ниже код:


| |
Sub Example2()
Dim objPresentation As Presentation
Dim i As Integer
'open the target presentation
Set objPresentation = Presentations.Open("C:\2.pptx")
For i = 1 To objPresentation.Slides.Count
objPresentation.Slides.Item(i).Copy
Presentations.Item(1).Slides.Paste
Presentations.Item(1).Slides.Item(Presentations.Item(1).Slides.Count).Design = _
objPresentation.Slides.Item(i).Design
Next i
objPresentation.Close
End Sub
|
Помимо копирования слайда, приведенный выше код копирует дизайн. Если вы хотите сделать это вручную, скопируйте мастер слайдов в новую презентацию. Вы не можете скопировать образец слайдов с помощью VBA, но вместо этого вы можете установить свойство дизайна слайдов.