Viết Macro trong MS PowerPoint

Liên hệ QC
Bài toán của anh dù làm là Excel, Word, Powerpoint (PPT) hay bất cứ cái gì sẽ không thể làm được nếu như không dùng Class Module.
Cám ơn Tuân,
Đúng là Excel và PP thì không thể nhưng đối với Word thì mình là bình thường, chỉ cần viết code Auto_Close, Auto_Exit, ... trong File Normal.dot là được.

==============
Dựa vào hướng dẫn của Tuân, mình đã làm được như mong muốn.
Cảm ơn Tuân rất rất nhiều. Chúc Tuân cuối tuần thật vui !
TDN
 
Lần chỉnh sửa cuối:
Mình thử làm một AddIn tương tự trên Excel theo cách làm của Tuân hướng dẫn nhưng nó chỉ chạy Auto_Open; còn Auto_close hoặc Auto_Save thì nó lại không chạy ???
Nhờ Tuân và các bạn xem giúp. Xin cảm ơn !

TDN

 

File đính kèm

  • TestAutoRun.zip
    8.7 KB · Đọc: 17
mình muốn học lại làm powerpoint từ đầu,có bạn nào chỉ cho mình cách học và đường link hướng dẫn tự học với...^^...thanks...
 
Chao ban ! Thac Mac ve Van De Tren !

Bài toán của anh dù làm là Excel, Word, Powerpoint (PPT) hay bất cứ cái gì sẽ không thể làm được nếu như không dùng Class Module. Sử dụng Class Module ta sẽ lấy được events của đối tượng và viết mã bên trong nó.

Quy trình thực hiện như sau:

Tạo một file PPT, nhấn ALT+F11 vào môi trường VBE.

1) Tạo một Class Module, đặt tên là clsPPTApp và viết code như sau

Mã:
Private WithEvents mApp As Application
[COLOR=DarkGreen]'-------------------------------------------------------------------------[/COLOR]
Private Sub Class_Initialize()
    If mApp Is Nothing Then
        Set mApp = Application
    End If
End Sub
[COLOR=DarkGreen]'-------------------------------------------------------------------------[/COLOR]
Private Sub Class_Terminate()
    Set mApp = Nothing
End Sub
[COLOR=DarkGreen]'-------------------------------------------------------------------------[/COLOR]
Private Sub mApp_PresentationOpen(ByVal Pres As Presentation)
    MsgBox Pres.Name, vbInformation, "Open"
    [COLOR=DarkGreen]'Do something when opening[/COLOR]
End Sub
[COLOR=DarkGreen]'-------------------------------------------------------------------------[/COLOR]
Private Sub mApp_PresentationClose(ByVal Pres As Presentation)
    MsgBox Pres.Name, vbInformation, "Close"
    [COLOR=DarkGreen]'Do something when closing[/COLOR]
End Sub

2) Tạo một Module, viết code như sau
Mã:
Dim mPPTApp As clsPPTApp [COLOR=DarkGreen]'Tên của Class  được đặt tên ở 1)[/COLOR]
[COLOR=DarkGreen]'-------------------------------------------------------------------------[/COLOR]
Sub Auto_Open()
    If mPPTApp Is Nothing Then
        Set mPPTApp = New clsPPTApp
    End If
End Sub
[COLOR=DarkGreen]'-------------------------------------------------------------------------[/COLOR]
Sub Auto_Close()
    Set mPPTApp = Nothing
End Sub

Với bài toán của anh, hãy tập trung viết code trong Class Module clsPPTApp ở hai thủ tục sự kiện là: mApp_PresentationOpen, mApp_PresentationClose

b3) Sau khi viết code đã hoàn tất hãy lưu file này ở dạng Add-In (ppa, ppam (PPT 2007)).

b4) Cài đặt file Add-In cho PPT. Quy trình cài đặt Add-In giống như làm với Excel.
Lưu ý: file add-in sẽ không nhìn thấy code, nếu cần sửa lại code thì phải mở file gốc (*.ppt) chỉnh sửa rồi lại lưu lại ở dạng add-in.


Anh làm theo đúng quy trình gồm 4 bước trên là được. Anh tham khảo file gửi kèm.



Chào bạn

Minh cũng đang quan tâm bài viết của ban như trên, mình cũng đã làm thử và thêm vào đoạn code như sau vào phần PresentionClose mà vẫn không được :

If Application.ActivePresentation.FullName <> "BB.pptx" Then
Application.ActivePresentation.SaveCopyAs "D:\BB.pptx", ppSaveAsPresentation

End If

có nghĩa là khi mình soạn thảo, chỉnh sửa file 1 Power Point nào đó, khi mình đóng CT ( thoát khỏi Power Point ) thì làm sao nó sẽ Tự Động Lưu 1 file giống như mình vừa mới làm và file back up này tên là BB.pptx lưu ở ổ đỉa D:, mình run trực tiep trong VBA thì nó chạy và lưu ra 1 file BB.pptx Ngon Lành, nhưng thoát khỏi VBA , ra ngoài giao diện chính Power Point làm việc xong, khi Thoát ra, nó không có tự động lưu cho mình 1 file BB.pptx vậy bạn, rất mong bạn giúp đỡ, địa chỉ email của mình : tranquangvinh@hotmail.com, nếu đuoc bạn cho mình xin số dt của bạn để mình liên lạc nói chuyện cho dzễ nhé !

Thanks bạn
 
Web KT
Back
Top Bottom