Cập nhật lần cuối: Tháng 6 năm 2020
Áp dụng cho: Office 2019 trở lên. Chỉ dành cho Windows.
Đây là câu hỏi của một độc giả:
Là một phần của bản trình bày báo cáo hàng quý của tôi với ban giám đốc, tôi thường cần sao chép một số trang trình bày thông tin chung từ các bản trình bày khác. Không phải là một vấn đề lớn, nhưng nó sẽ là một tiết kiệm đáng kể để có thể tự động hóa bài tập này. Bất kỳ trợ giúp VBA Macro nào để thực hiện điều đó đều được đánh giá cao!
Như bạn vừa đề cập, bạn có thể tự động sao chép và dán các trang chiếu trong PowerPoint bằng Visual Basic for Applications. Nếu bạn cần tạo nhiều bản trình bày mỗi tháng, tính năng tự động sao chép / nhập trang chiếu này có thể trở thành một công cụ tiết kiệm thời gian rất lớn!
PowerPoint VBA để thêm các trang chiếu
Hãy bắt đầu với bài tập đơn giản này.
Trước hết, hãy đảm bảo rằng tab phát triển của bạn được bật và hiển thị. Đây là cách để làm điều đó .
Tôi giả sử rằng bạn đã tạo một bản trình bày hỗ trợ Macro (loại tệp là .pptm), mà bạn đã đặt trong cùng thư mục với bản trình bày nguồn của bạn (mà tôi sẽ gọi là source.pptm). Đây là cách tạo bản trình bày PowerPoint với VBA .
Trước hết, hãy tạo một bản sao lưu của bản trình bày đó (sao chép và lưu đơn giản).
Sau đó, hãy để chúng tôi tiếp tục và chèn Macro sau vào một mô-đun VBA mới trong bản trình bày đích của bạn. Tất cả chi tiết về cách thực hiện điều đó có thể được tìm thấy trong hướng dẫn PowerPoint VBA của chúng tôi .
Đây là mã VBA mà bạn cần để tự động sao chép và dán các trang trình bày.
Một số giả định tôi đã đưa ra:
- Bản trình bày nguồn của bạn có tên là source.pptm
- Bạn sẽ dán các trang trình bày 2-4 từ bản trình bày nguồn của mình
- Bạn sẽ đặt các trang trình bày đã sao chép bắt đầu trang trình bày 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
Rõ ràng, hãy thoải mái thay đổi lập chỉ mục số slide trong mã để chúng phù hợp với yêu cầu của bạn.
Bạn có thể làm cho nó lặp lại qua một số bản trình bày và chèn các trang trình bày cụ thể từ mỗi bản trình bày vào báo cáo quản lý của mình.
PowerPoint VBA để sao chép các trang trình bày
Thay vì sao chép các trang trình bày sang một bản trình bày khác, bạn có thể muốn sao chép một hoặc nhiều trang trình bày trong bản trình bày của mình:
Sub CopySlides()
' Short snippet to duplicate the third slide in a presentation, change the index/es accrodingly
ActivePresentation.Slides(3).Duplicate
End Sub
Đó chỉ là một vài ví dụ đơn giản về tự động hóa PowerPoint. Độc giả tìm kiếm câu hỏi cụ thể, vui lòng gửi yêu cầu thông qua trang Liên hệ.
Hy vọng nó sẽ giúp 🙂
Giữ nguyên định dạng khi sao chép slide
Vấn đề với ví dụ trước là định dạng chủ đề bản trình bày ban đầu không được sao chép. Giả sử 2 trang tính có định dạng khác nhau thì điều này sẽ xảy ra:
ví dụ 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
|

Đây là bản trình bày có slide mà chúng tôi muốn sao chép:
Kết quả:
Để khắc phục vấn đề này, bạn có thể sử dụng mã bên dưới:
![Các slide cần sao chép]()
![Kết quả]()
| |
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
|
Ngoài việc sao chép slide, đoạn mã trên còn sao chép thiết kế. Nếu bạn muốn thực hiện việc này một cách thủ công, bạn sẽ sao chép slidemaster sang bản trình bày mới. Bạn không thể sao chép slidemaster bằng VBA mà thay vào đó bạn có thể đặt thuộc tính thiết kế của các slide.