close
如何用 EXCEL VBA 、Outlook 定時、定期自動寄送郵件

如何定時、定期自動寄送郵件?以下使用利用 EXCEL VBA 及 Outlook來達到自動寄送郵件的目的。而定期、定時這個動作則是使用 Windows Task Schedule (工作排程器)來達成。

 

使用EXCEL VBA來自動寄送郵件

設計的邏輯大概如下

1. 使用EXCEL VBA 撰寫一個「用OUTLOOK郵寄」的 VBA 巨集。

2. 開啟工作頁時,執行Workbook_Open巨集,並用此巨集開啟「用OUTLOOK郵寄」。

3. 自動關閉EXCEL應用程式。

 

 

EXCEL VBA 程式碼 - 寄送郵件

Sub 用OUTLOOK郵寄()


    '*************
    '
    '  設定收件人
    '
    '*************
    
    Dim I As Integer
    Dim M As Integer
    Dim ToWho As String
        
    
    I = Sheets("收件人").Range("B2").End(xlDown).Row
    
    Sheets("收件人").Select
    
    For M = 2 To I
    
      ToWho = ToWho & Cells(M, "B") & ";"
    
    Next M
    
    '設定副本收件人
     Dim J As Integer
     Dim Q As Integer
     Dim ToWhoCC As String
       
     J = Sheets("收件人").Range("F2").End(xlDown).Row
    
     Sheets("收件人").Select
    
     For Q = 2 To J
    
       ToWhoCC = ToWhoCC & Cells(Q, "F") & ";"
     Next Q
    
    
    '設定郵件主旨
    Dim YTMailSubject As String
    
    YTMailSubject = Sheets("郵件內容").Cells(1, "B") & " - " & Date
    
    
    '設定郵件內容
    Dim YTMailBody As String
    Dim Signature As String
    
    Dim MyAttachmens As Object
    
    
    '郵件內容主體
    YTMailBody = Sheets("郵件內容").Cells(2, "B") & Sheets("郵件內容").Cells(4, "B") & Sheets("郵件內容").Cells(5, "B")
    
    '簽名檔
    Signature = Sheets("郵件內容").Cells(3, "B")
    
    Set Outapp = CreateObject("Outlook.application")

    
    Set Outmail = Outapp.CreateItem(0)
    
    Set MyAttachments = Outmail.Attachments
    
    With Outmail
        .To = ToWho
        .CC = ToWhoCC
        .Subject = YTMailSubject
         'MyAttachments.Add "C:\【自動化】\已上線\自動郵件-工程預借機提醒\借機表格.xlsx"
        
        .HTMLBody = YTMailBody & Signature
        
        
        '.Body = YTMailBody
        .Send
        '.Display
    End With


End Sub

 

 

搭配設計的 EXCEL 工作頁

收件人:填在「欄位B」

副本收件人:填在「欄位F」

 

undefined

 

主旨、內容等直接填在相對欄位內即可。填入時請用HTML的格式。

undefined

 

 

 

開啟工作頁時,執行巨集

 

 

undefined

 

 

Private Sub Workbook_Open()
          
      
    Dim F As Boolean
    Dim TEST As String
    Dim K As Integer
    
    
    TEST = ThisWorkbook.Path

    F = CreateObject("Scripting.FileSystemObject").FileExists(TEST & "\可執行巨集.txt") '確定有這個檔案,才會去執行
    
    If F = True Then
        
        Call 用OUTLOOK郵寄
        Application.Quit
        
    
    End If
                              
     
End Sub

 

 

撰寫 HTML 格式

上面有提到郵件內容要使用HYML格式,但我們不會HTML的語法要怎麼辦?可以直接到以下網頁中

https://wordtohtml.net/

可以直接在此網頁左欄中編輯你想要的格式,也可在Word、Outlook中編輯好格式後,再將其複製並貼到上面,並網頁上的工具轉換為html格式。

轉換完後,我們再將HTML碼貼到EXCEL相對的欄位即可。

undefined

 

 

工作排程器 Task Schedule 開啟EXCEL檔案

輸入 taskschedlue,並開啟它

undefined

 

建立基本工作

undefined

 

 

「名稱」:輸入這一個工作的名稱

「描述」:這邊可以針對這個工作做描述,也可以不用寫。

undefined

 

設定工作觸發的時間、週期

undefined

 

上一步我們是選擇「每週」,所以還可以選擇是哪幾天

undefined

 

選擇我們上述設定的EXCEL的範本

undefined

 

執行完上述步驟,即完成定期寄送郵件的設定。

undefined

 

延伸閱讀

■ EXCEL VBA 相關文章🔍


arrow
arrow
    全站熱搜

    News123 發表在 痞客邦 留言(0) 人氣()