內容目錄
前言:
上次講解過如何用VBA控制Word,希望大家都能實際運用,節省時間。
我相信很多朋友對於如何提升生產力,優化時間管理的效益有很大需求,那麼我們今天再來講解一下VBA對於Outlook的操作。
如果有讀過《自學Excel VBA系列-如何用VBA控制WORD?》,對於如何控制外部程式應該有一定的經驗,解說部分我們就相對簡短一點。
同樣,開始之前一定要在VBA裡面的工具–>設定引用項目–>勾選Microsoft Outlook 14.0 Object Library。
顯示電子郵件視窗:
Sub CreateMail()
‘outlook應用程式儲存在物件變數中
Dim olApp As Outlook.Application
Set olApp = New Outlook.Application
‘建立MailItem物件
Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)
‘預覽郵件
olMail.Display
MsgBox “已打開 OUTLOOK”
‘刪除物件變數參照
Set olMail = Nothing
Set olApp = Nothing
End Sub
這個程式碼主要是執行以下程序:
- 宣告olApp為Outlook.Application型的物件變數
- 使用new生成Outlook的物件,並儲存在olApp內
- 打開一封新郵件
- 彈出Msgbox
聽起來好像比Word要複雜一點,沒關係,我們一步一步慢慢來,先嘗試執行程式碼,應該可以打開一封新郵件。
操作Outlook的概念
之後若要操作Outlook應用程式,只要寫成 (變數名稱.屬性) 及 (變數名稱.方法)就可以了。
備註:至於這一句olApp.CreateItem(olMailItem),括號裡面的東西有點疑問,不放東西會有錯誤,隨便改個名字也能通過,後面也不會再用到這個變數。
傳送電子郵件練習:
- 收件者:abc@excel.com
- 主旨:你好
- 內容:郵件內容
- 格式:文字格式
Sub SendMail()
‘outlook應用程式儲存在物件變數中
Dim olApp As Outlook.Application
Set olApp = New Outlook.Application
‘建立MailItem物件
Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)
‘電子郵件資料
With olMail
'收件者 .To = "abc@excel.com" '主旨 .Subject = "你好" '郵件內容 .Body = "郵件內容" '郵件格式 .BodyFormat = olFormatPlain '文字格式
End With
‘加入附件
olMail.Attachments.Add ThisWorkbook.Path & “\pic1.png” ‘要記得建立png檔。否則,直接刪除這一行
‘傳送電子郵件
olMail.Save ‘儲存草稿
olMail.Display ‘顯示預覽
olMail.Send ‘傳送
MsgBox “已傳送郵件”
‘刪除物件變數參照
Set olMail = Nothing
Set olApp = Nothing
End Sub
至此,剛才介紹過的屬性及方法已全部操作過。
另外,如果想要加入副本,就是olMail.Cc;設定密件副本,就是olMail.Bcc。
傳送多封郵件練習:
首先在工作表中建立清單以及郵件內容資料,
Sub SendMultiMail()
‘outlook應用程式儲存在物件變數中
Dim olApp As Outlook.Application
Set olApp = New Outlook.Application
‘取得清單的最後一列
Dim maxRow As Long
maxRow = Worksheets(“清單”).Cells(Rows.Count, 1).End(xlUp).Row
‘MsgBox maxRow ‘測試用
‘回圈執行直至最後一列
Dim i As Long
For i = 2 To maxRow
‘建立MailItem物件
Dim olMail As Outlook.MailItem
Set olMail = olApp.CreateItem(olMailItem)
‘電子郵件資料
With olMail
'收件者
.To = Worksheets("清單").Cells(i, 3).Value
'主旨
.Subject = Worksheets("郵件內容").Range("B1").Value
'郵件內容
Dim str As String
str = Worksheets("郵件內容").Range("B2").Value
str = Replace(str, "[公司名稱]", Worksheets("清單").Cells(i, 1).Value)
str = Replace(str, "[姓名]", Worksheets("清單").Cells(i, 2).Value)
.Body = str
'郵件格式
.BodyFormat = olFormatPlain '文字格式
End With
‘加入附件
olMail.Attachments.Add ThisWorkbook.Path & “\pic1.png”
‘傳送電子郵件
olMail.Save ‘儲存草稿
‘olMail.Display ‘顯示預覽
‘olMail.Send ‘傳送
Set olMail = Nothing
Next i
‘刪除物件變數參照
Set olApp = Nothing
End Sub
為了便於測試,預覽和傳送都變成備註。實際操作下來,其實也沒有太複雜,海量傳送郵件的感覺還是很不錯的,有任何問題歡迎留言給我。