今天給大家聊一下如何用自動發郵件,坦白說,這事其實只需要一句。
比如,我要給郵箱"李海博客@qq.com"發一封郵件,標題是"你好啊李海博客",同時將當前工作簿作為附件一起發過去:
代碼看不全可以左右拖動..▼
Sub?SendMail_1()????
ActiveWorkbook.SendMail?"李海博客@qq.com",?"你好啊李海博客"
End?Sub
你看,是不是只需要一句代碼?
代碼使用了SendMail,這是工作簿對象的方法,語法格式如下:
工作簿.SendMail(收件人,主題,是否返回收件人)
就三個參數,第3參數還可以省略,只需要提供收件人和主題就可以了。不過需要注意的是它會將工作簿作為附件發送給收件人。
收件人是多人
有朋友可能會問,如果收件人是多人怎么辦呢?
將收件人地址修改為一維數組即可。
示例代碼如下:代碼看不全可以左右拖動..▼
Sub?SendMail2()?'發送多人????
Dim?aName,?strTit?As?String????
aName?=?Array("李海博客@qq.com",?"4234534665@qq.com")????
strTit?=?"你好啊李海博客"????
ThisWorkbook.SendMail?aName,?strTit
End?Sub
第3行代碼指定了兩個收件人。
發送部分工作表
上面的兩段代碼都是將整個工作簿作為附件發送出去,如果有朋友只需要發送工作簿中的部分工作表,可以參考以下代碼。
以下代碼將代碼所在工作簿中兩個名為"看見星光"和"老祝"的工作表,組合成一個新工作簿,作為附件發送給多個收件人:
代碼看不全可以左右拖動..▼
Sub?SendMail3()?'將指定工作表轉換為工作簿發送????
Dim?aName,?aShtName,?strTit?As?String????
aName?=?Array("李海博客@qq.com",?"測試@qq.com")????
strTit?=?"你好,這是測試郵件"????
aShtName?=?Array("Sheet1",?"Sheet2")????
Worksheets(aShtName).Copy????
ActiveWorkbook.SendMail?aName,?strTit????
ActiveWorkbook.Close?False
End?Sub
第5行代碼指定了兩個工作表名稱,第6行代碼使用工作表對象的Copy方法,將指定工作表集合轉換為單獨工作簿。
第7行代碼發送郵件,第8行代碼關閉并不保存當前工作簿。
發送指定工作簿
那再提一個新問題,上述代碼是將代碼所在工作簿作為附件發送,如果是將發送指定工作簿作為附件怎么辦呢?
以下代碼可以將當前工作簿同路徑下的一個名為"測試"的工作簿,作為附件,發送指定收件人。
代碼看不全可以左右拖動..▼
Sub?SendMail4()?'發送指定路徑下工作簿????
Dim?aName,?strPath?As?String,?wk?As?Workbook,?strTit?As?String????
aName?=?Array("Excel星球@qq.com",?"測試@qq.com")????
strTit?=?"你好,這是測試郵件"????
strPath?=?ThisWorkbook.Path?&?"/測試.xlsx"????
Set?wk?=?Workbooks.Open(strPath)????
ActiveWorkbook.SendMail?aName,?strTit????
ActiveWorkbook.Close?False
End?Sub
第5行代碼指定了目標工作簿的完整路徑。第6行代碼使用工作簿的Open方法打開該工作簿。
第7行代碼發送郵件,操作對象是ActiveWorkbook,即當前活動工作簿。第8行代碼關閉并不保存當前工作簿。
……
最后,我再說一句大實話,使用以上代碼時務必先打開并登陸Outlook郵箱,不然你憑啥發郵件?