thảo luận Ebook VBA cho Outlook bản gốc + bản dịch cho những anh em quan tâm

NguyenDang95

Senior Member
Xin chào mọi người. Không biết anh em nào trong đây có thường xuyên sử dụng Outlook để quản lý email công việc và quan tâm đến VBA để có thể viết được macro xử lý những công việc mang tính lặp đi lặp lại như tự động gửi email hàng loạt, tự động gửi email chúc mừng sinh nhật đến người khác dựa vào Calendar,... không nhỉ. Mình cũng là người thường xuyên sử dụng Outlook cho công việc, cũng quan tâm đến VBA, mày mò học hỏi thông qua những tài liệu ít ỏi trên mạng internet và trên trang trợ giúp của Microsoft. Cũng tiếc là ở Việt Nam lại rất ít người quan tâm đến chủ đề này, đa số đều xoay quanh Excel VBA. Thật may là trong quá trình tìm kiếm trên internet mình tìm được ebook "Microsoft Outlook 2007 Programming - Jumpstart for Administrators and Power Users" của tác giả Sue Mosher mà mình thấy rất hay. Mặc dù cuốn sách này đã ra mắt cách đây cũng hơn 15 năm và một số kiến thức trong sách không còn phù hợp với những phiên bản Outlook sau này, tuy nhiên kiến thức mà cuốn sách này truyền tải thì rất có giá trị.
Ngoài việc chia sẻ cuốn sách nói trên đến những anh em quan tâm, dựa vào vốn kiến thức ít ỏi của bản thân về VBA + tiếng Anh, mình còn dịch cuốn sách đó sang tiếng Việt với mong muốn tiếp cận được đến nhiều anh em hơn. Tuy nhiên với đặc điểm là ban ngày đi làm, ban đêm mới có thời gian dịch sách nên bản dịch thực ra vẫn chưa hoàn thành và vẫn còn khá nhiều thiếu sót về mặt câu cú, ngữ nghĩa. Mong nhận được sự góp ý của các anh em.
Link sách: https://1drv.ms/b/s!AmwM8BaWQzt0m-ALrY5Wnm0O69JF2g?e=Bj7M8Q

1656250789185.png


Bản dịch tiếng Việt: https://1drv.ms/w/s!AmwM8BaWQzt0nK44DVUe99cLCZ8PNg?e=gQACtz

1656250983494.png
 
Last edited:

khodattenqua

Senior Member
Với m đang tìm cách
Mỗi lần mở oulook , có cách nào sổ hết folder ra không nhỉ?
Hiện vẫn làm thủ công, nhiều khi Mail tới
Do rule mà nó nhảy vào folder
Lỡ quên là bị bỏ lỡ mail liền
 

NguyenDang95

Senior Member
Với m đang tìm cách
Mỗi lần mở oulook , có cách nào sổ hết folder ra không nhỉ?
Hiện vẫn làm thủ công, nhiều khi Mail tới
Do rule mà nó nhảy vào folder
Lỡ quên là bị bỏ lỡ mail liền
Cụ thể là thím muốn mở những thư mục nào khi khởi động Outlook?
 

khodattenqua

Senior Member
Cụ thể là thím muốn mở những thư mục nào khi khởi động Outlook?
M mún nó xổ hết là mừng lắm rồi
Nhiều khi mở lên nó thu gọn lại
Phải bấm dấu tam giác nó mới hiện mới folder con ở trong folder cha
Kiểu kiểu vậy
 

khodattenqua

Senior Member
Nên mới bấm xổ ( từ hình như là expand)
Thì trong folder con
Nếu có Mail mới trong folder con, thì m sẽ nhận ra
 

NguyenDang95

Senior Member
Với m đang tìm cách
Mỗi lần mở oulook , có cách nào sổ hết folder ra không nhỉ?
Hiện vẫn làm thủ công, nhiều khi Mail tới
Do rule mà nó nhảy vào folder
Lỡ quên là bị bỏ lỡ mail liền
Thế thì thím thử dùng macro này xem sao.
Cái này mình thấy trên trang https://www.datanumen.com/blogs/how-to-auto-expand-all-folders-via-vba-when-starting-your-outlook/#:~:text=Auto Expand All Folders when,Outlook to access VBA editor.

Code:
'Auto expand all folders on startup
Private Sub Application_Startup()
    Call ExpandAllFolders
End Sub

Private Sub ExpandAllFolders()
    Dim objCurrentFolder As Outlook.Folder
    Dim objStore As Outlook.Store
    Dim objFileFolders As Outlook.Folders
    Dim objFolder As Outlook.Folder
 
    Set objCurrentFolder = Application.ActiveExplorer.CurrentFolder
 
    'Process all email accounts in your Outlook
    For Each objStore In Outlook.Application.Session.Stores
        Set objFileFolders = objStore.GetRootFolder.Folders
 
        For Each objFolder In objFileFolders
            Call LoopFolders(objFolder)
        Next
 
        DoEvents
        Set Application.ActiveExplorer.CurrentFolder = objCurrentFolder
    Next
End Sub

Sub LoopFolders(ByVal objCurFolder As Outlook.Folder)
    Dim objSubfolder As Outlook.Folder
 
    Set Application.ActiveExplorer.CurrentFolder = objCurFolder
    DoEvents
 
    'Process all subfolders recursively
    If objCurFolder.Folders.Count > 0 Then
       For Each objSubfolder In objCurFolder.Folders
           Call LoopFolders(objSubfolder)
       Next
    End If
End Sub

Nhớ đưa macro này vào mục ThisOutlookSession trong cửa sổ VBE nhé.
 

khodattenqua

Senior Member
Thế thì thím thử dùng macro này xem sao.
Cái này mình thấy trên trang https://www.datanumen.com/blogs/how-to-auto-expand-all-folders-via-vba-when-starting-your-outlook/#:~:text=Auto Expand All Folders when,Outlook to access VBA editor.

Code:
'Auto expand all folders on startup
Private Sub Application_Startup()
    Call ExpandAllFolders
End Sub

Private Sub ExpandAllFolders()
    Dim objCurrentFolder As Outlook.Folder
    Dim objStore As Outlook.Store
    Dim objFileFolders As Outlook.Folders
    Dim objFolder As Outlook.Folder
 
    Set objCurrentFolder = Application.ActiveExplorer.CurrentFolder
 
    'Process all email accounts in your Outlook
    For Each objStore In Outlook.Application.Session.Stores
        Set objFileFolders = objStore.GetRootFolder.Folders
 
        For Each objFolder In objFileFolders
            Call LoopFolders(objFolder)
        Next
 
        DoEvents
        Set Application.ActiveExplorer.CurrentFolder = objCurrentFolder
    Next
End Sub

Sub LoopFolders(ByVal objCurFolder As Outlook.Folder)
    Dim objSubfolder As Outlook.Folder
 
    Set Application.ActiveExplorer.CurrentFolder = objCurFolder
    DoEvents
 
    'Process all subfolders recursively
    If objCurFolder.Folders.Count > 0 Then
       For Each objSubfolder In objCurFolder.Folders
           Call LoopFolders(objSubfolder)
       Next
    End If
End Sub

Nhớ đưa macro này vào mục ThisOutlookSession trong cửa sổ VBE nhé.
Thank thím nhiều
Sáng mai thử liền
 
Top