Tạo tính năng trộn thư trên PowerPoint với VBA Excel

Nếu bạn có một mẫu chứng chỉ hay mẫu giấy khen trên PowerPoint. Bạn cần tạo hàng loạt giấy khen theo danh sách lớp học. Theo cách truyền thống bạn sẽ tạo cho từng học sinh. Công việc này sẽ làm bạn tiêu tốn nhiều thời gian, và có thể sai lệch do lỗi đánh máy.

Bài viết này tôi xin chia sẻ cách tạo hàng loạt giống như tính năng trộn thư trên Word. Chỉ mất vài phút bạn đã tạo ra hàng trăm, hàng nghìn mẫu tuyệt đối chính xác. Và khi tạo xong công cụ này, bạn có thể sử dụng mãi mãi.

{tocify} $title={Table of Contents}

Tạo form mẫu trên PowerPoint

Trước tiên các bạn hãy tạo một thư mục trên ổ gốc (ổ D hay E tùy máy tính của bạn) với tên tùy ý. Tiếp theo các bạn mở PowerPoint lên, và đưa mẫu giấy khen hay chứng chỉ của bạn vào PowerPoint.

Trên mẫu mới đưa vào PowerPoint, các bạn chèn Text Box vào các vị trí cần đưa thông tin vào. Trên file mẫu tôi đã thêm TextBox vào các vị trí: Tên Trường, Tên học sinh, Lớp, Danh hiệu, Năm học.

Tiếp theo chúng ta sẽ định nghĩa tên của từng TextBox đã thêm vào bằng cách nhấp vào Home \ Select \ Selection Pane. Nhấp vào từng TextBox đã thêm trên mẫu, để đặt tên như mong muốn. 


Lưu ý: để hạn chế lỗi trong việc viết code trên VBA, khuyến khích các bạn đặt tên không dấu, và không có khoảng trắng giữa các từ.

Các bạn cũng có thể tải file mẫu của tôi ở đường dẫn bên dưới về dùng tạm nhé.
Lưu lại file PowerPoint vào thư mục đã tạo trước đó với tên MauBieu.

Tạo danh sách và hàm trộn thư trên Excel

Trên file danh sách, các bạn chèn thêm một nút nhấn và đặt tên là Trộn Thư như hình:


Các bạn có thể tham khảo cách bật tab Developer và cách chèn nút qua các bài viết:
Sao chép đoạn code bên dưới và dán vào Module 1 trên trình soạn thảo code VBA của Excel. Gán hàm Insert2PowerPoint() vào nút Trộn Thư.

Sub Insert2PowerPoint()

Dim myPowerPoint As PowerPoint.Application
Dim activeSlide As PowerPoint.Slide
Dim LastRow As Integer
Dim myFilePath, Filename As String
Dim LinkPPT As String

myFilePath = ThisWorkbook.Path
LinkPPT = myFilePath & "\MauBieu.pptx"

Set myPowerPoint = CreateObject("PowerPoint.Application")
myPowerPoint.Presentations.Open (LinkPPT)
myPowerPoint.Visible = True
LastRow = Sheets("Data").Cells(Sheets("Data").Rows.Count, "B").End(xlUp).Row

For i = 3 To LastRow
myPowerPoint.ActiveWindow.View.GotoSlide myPowerPoint.ActivePresentation.Slides.Count
Set activeSlide = myPowerPoint.ActivePresentation.Slides(myPowerPoint.ActivePresentation.Slides.Count)
If i < LastRow Then
Dim newSlide As PowerPoint.Slide
Set newSlide = myPowerPoint.ActivePresentation.Slides(myPowerPoint.ActivePresentation.Slides.Count).Duplicate()(1)
End If
activeSlide.Shapes("TenTruong").TextFrame.TextRange.Text = Sheets("Data").Cells(1, 5).Value
activeSlide.Shapes("HoTen").TextFrame.TextRange.Text = Sheets("Data").Cells(i, 2).Value
activeSlide.Shapes("DanhHieu").TextFrame.TextRange.Text = Sheets("Data").Cells(i, 3).Value
activeSlide.Shapes("TenLop").TextFrame.TextRange.Text = Sheets("Data").Cells(i, 4).Value
activeSlide.Shapes("NamHoc").TextFrame.TextRange.Text = Sheets("Data").Cells(2, 5).Value
Next i

AppActivate ("PowerPoint")
Set activeSlide = Nothing
Set newPowerPoint = Nothing

End Sub
Cuối cùng, các bạn nhấp vào nút Trộn Thư để xem thành quả tạo ra nhé. Nếu có thắc mắc hoặc không hiểu xin để lại bình luận bên dưới. Thank for Watching!
Techzvn.Net

Thư viện thủ thuật Phần mềm - Windows - Android - IOS

Post a Comment

Previous Post Next Post

Thảo Luận

×Close