Останнє оновлення: червень 2020 року
Застосовується до: Office 2019 і старіших версій. Тільки Windows.
Ось запитання від читача:
У рамках презентації свого квартального звіту керівництву мені часто потрібно скопіювати кілька загальних інформаційних слайдів з інших презентацій. Неважко, але автоматизувати цю вправу можна було б значно заощадити. Будь-який макрос VBA, який допомагає досягти цього, цінується!
Як ви щойно згадували, ви можете автоматизувати копіювання та вставку слайдів у 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. Читачі, які шукають конкретні запитання, не соромтеся надсилати запит через сторінку Контакти.
Сподіваюся, це допоможе 🙂
Зберігайте форматування під час копіювання слайдів
Проблема з попереднім прикладом полягала в тому, що оригінальне форматування теми презентації не було скопійовано. Припустімо, що 2 аркуші мали різне форматування, ось що сталося б:
Приклад 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, але замість цього ви можете встановити властивість дизайну слайдів.