Последна актуализация: юни 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, но вместо това можете да зададете свойството дизайн на слайдовете.