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
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 Autpen; 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 !
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.
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é !