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!

1 Comments

  1. bạn có thể phân tích kỹ code ở trên đc k vì k phải file nào cx giống file nào

    ReplyDelete
Previous Post Next Post

Comments