ปรับปรุงล่าสุด: มิถุนายน 2020
ใช้ได้กับ: Office 2019 ขึ้นไป Windows เท่านั้น
นี่เป็นคำถามจากผู้อ่าน:
ในการนำเสนอรายงานประจำไตรมาสต่อผู้บริหาร ฉันมักจะต้องคัดลอกสไลด์ข้อมูลทั่วไปหลายสไลด์จากการนำเสนออื่นๆ ไม่ใช่เรื่องใหญ่ แต่จะเป็นการประหยัดที่สำคัญที่สามารถทำให้แบบฝึกหัดนี้เป็นแบบอัตโนมัติได้ VBA Macro ใด ๆ ที่ช่วยให้บรรลุผลที่ได้รับการชื่นชม!
ตามที่คุณเพิ่งกล่าวถึง คุณสามารถทำการคัดลอกและวางสไลด์ใน PowerPoint โดยอัตโนมัติโดยใช้ Visual Basic for Applications หากคุณต้องการสร้างงานนำเสนอหลายรายการทุกเดือน ระบบอัตโนมัติคัดลอก/นำเข้าสไลด์นี้อาจช่วยประหยัดเวลาได้มาก!
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 แต่คุณสามารถตั้งค่าคุณสมบัติการออกแบบของสไลด์แทนได้