国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
利用Excel批量快速發(fā)送電子郵件


   

       
        分類:
            應(yīng)用開(kāi)發(fā)
       

    2012-10-31 20:51
    4513人閱讀
    評(píng)論(8)
    收藏
    舉報(bào)
   


   

目錄(?)[+]



利用Excel批量快速發(fā)送電子郵件,分兩步:





1. 準(zhǔn)備待發(fā)送的數(shù)據(jù):


   a.) 打開(kāi)Excel,新建Book1.xlsx


   b.) 填入下面的內(nèi)容,


第一列:接收人,第二列:郵件標(biāo)題,第三列:正文,第四列:附件路徑


注意:附件路徑中可以有中文,但是不能有空格





這里你可以寫更多內(nèi)容,每一行作為一封郵件發(fā)出。


注意:郵件正文是黑白文本內(nèi)容,不支持加粗、字體顏色等。(如果你需要支持彩色的郵件,后面將會(huì)給出解決辦法)





2. 編寫宏發(fā)送郵件


  a.) Alt + F11 打開(kāi)宏編輯器,菜單中選:插入->模塊


  b.) 將下面的代碼粘貼到模塊代碼編輯器中:





‘代碼list-1



  1. Public Declare Function SetTimer Lib "user32" _  
  2.         (ByVal hwnd As LongByVal nIDEvent As LongByVal uElapse As LongByVal lpTimerfunc As LongAs Long  
  3. Public Declare Function KillTimer Lib "user32" _  
  4.         (ByVal hwnd As LongByVal nIDEvent As LongAs Long  
  5. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)  
  6.   
  7.   
  8.   
  9. Function WinProcA(ByVal hwnd As LongByVal uMsg As LongByVal idEvent As LongByVal SysTime As LongAs Long  
  10.     KillTimer 0, idEvent  
  11.     DoEvents  
  12.     Sleep 100  
  13.     '使用Alt+S發(fā)送郵件,這是本文的關(guān)鍵之處,免安全提示自動(dòng)發(fā)送郵件全靠它了  
  14.     Application.SendKeys "%s"  
  15. End Function  
  16.   
  17.   
  18. ' 發(fā)送單個(gè)郵件的子程序  
  19. Sub SendMail(ByVal to_who As StringByVal subject As StringByVal body As StringByVal attachement As String)  
  20.     Dim objOL As Object  
  21.     Dim itmNewMail As Object  
  22.     '引用Microsoft Outlook 對(duì)象  
  23.     Set objOL = CreateObject("Outlook.Application")  
  24.     Set itmNewMail = objOL.CreateItem(olMailItem)  
  25.     With itmNewMail  
  26.         .subject = subject  '主旨  
  27.         .body = body   '正文本文  
  28.         .To = to_who  '收件者  
  29.         .Attachments.Add attachement '附件,如果你不需要發(fā)送附件,可以把這一句刪掉即可,Excel中的第四列留空,不能刪哦  
  30.         .Display  '啟動(dòng)Outlook發(fā)送窗口  
  31.         SetTimer 0, 0, 0, AddressOf WinProcA  
  32.     End With  
  33.     Set objOL = Nothing  
  34.     Set itmNewMail = Nothing  
  35. End Sub  
  36.   
  37.   
  38.   
  39.   
  40. '批量發(fā)送郵件  
  41. Sub BatchSendMail()  
  42.     Dim rowCount, endRowNo  
  43.     endRowNo = Cells(1, 1).CurrentRegion.Rows.Count  
  44.     '逐行發(fā)送郵件  
  45.     For rowCount = 1 To endRowNo  
  46.         SendMail Cells(rowCount, 1), Cells(rowCount, 2), Cells(rowCount, 3), Cells(rowCount, 4)  
  47.     Next  
  48. End Sub  


最終代碼編輯器中的效果如下圖:


i





為了正確執(zhí)行代碼,你還需要在


菜單中選擇: 工具->引用 中的Microseft Outlook X.0 Object Library  勾選上 (X.0是版本號(hào),不同機(jī)器可能不一樣)





   c.) 粘貼好代碼、勾選上上面的東東后可以發(fā)送郵件了,點(diǎn)擊上圖A紅圈所示的綠色三角按鈕,會(huì)彈出下圖所示的對(duì)話框,點(diǎn)運(yùn)行,就開(kāi)始批量發(fā)送郵件了。





   d.) 如果你想確認(rèn)你的郵件是否都發(fā)出去了,可以去Outlook的“已發(fā)送郵件”文件夾中查看,是否有你希望發(fā)出的郵件,如果有,恭喜你,收工~~











---------------------------------------------------------------------


下面講解


1. 如何發(fā)送彩色的郵件


2. 如何替換正文中的部分內(nèi)容,例如,每一封郵件中可能最開(kāi)始的稱呼不同,給對(duì)方報(bào)出的數(shù)字不同等


3. 如何發(fā)送多附件


---------------------------------------------------------------------



1. 如何發(fā)送彩色郵件



發(fā)送彩色郵件需要兩步,

第一步:上面的代碼需要改一句(紅色加粗文本,body改成HTMLBody):








‘代碼list-2


  1. ' 發(fā)送單個(gè)郵件的子程序  
  2. Sub SendMail(ByVal to_who As StringByVal subject As StringByVal body As StringByVal attachement As String)  
  3.     Dim objOL As Object  
  4.     Dim itmNewMail As Object  
  5.     '引用Microsoft Outlook 對(duì)象  
  6.     Set objOL = CreateObject("Outlook.Application")  
  7.     Set itmNewMail = objOL.CreateItem(olMailItem)  
  8.     With itmNewMail  
  9.         .subject = subject  '主旨  
  10.         '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  11.          .HTMLbody = body   '正文本文,僅僅這一行跟前面不同,其余都是一樣的哦~  
  12.                '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  13.         .To = to_who  '收件者  
  14.         .Attachments.Add attachement '附件  
  15.         .Display  '啟動(dòng)Outlook發(fā)送窗口  
  16.         SetTimer 0, 0, 0, AddressOf WinProcA    
  17.   End With    Set objOL = Nothing  
  18.     Set itmNewMail = NothingEnd Sub  



第二步:修改excel第三列(C列)的內(nèi)容,這需要你懂一點(diǎn)點(diǎn)HTML語(yǔ)言

例如,希望在郵件中將“報(bào)稅單”三個(gè)字變紅,加粗,則將第三列的內(nèi)容修改為:


您好,下面是這一周的<font color="red"><b>報(bào)稅單</b></font>,…


最終效果如圖:



去發(fā)件箱里看看效果吧:




注意:在Excel里面編輯正文,進(jìn)行加粗、加顏色的操作不會(huì)生效哦。必須用HTML自己來(lái),sorry哦

 不會(huì)HTML的朋友可以新浪微博follow我?guī)兔Γ篅研究員Raywill





2. 如何替換正文部分內(nèi)容


分兩步:


1. 換Excel內(nèi)容


2. 換代碼



1. 換Excel內(nèi)容:



將變化的部分用[==xxxx==]這樣的形式替換掉。注意:中間沒(méi)有空格。


例如上圖,數(shù)字[==1==]會(huì)被E列的內(nèi)容替換掉,[==2==]會(huì)被F列的內(nèi)容替換掉,依此類推,如果有更多,就添加更多列,[==3==], [==4==]等等。



2. 換代碼,將 "批量發(fā)送郵件"這一段程序完全替換成下面的代碼:



  1. '批量發(fā)送郵件  
  2. Sub BatchSendMail()  
  3.     Dim rowCount, endRowNo  
  4.     Dim newBody  
  5.     Dim replaceCount, maxReplaceCount  
  6.     Dim pattern  
  7.     endRowNo = Cells(1, 1).CurrentRegion.Rows.Count  
  8.       
  9.     '逐行發(fā)送郵件  
  10.     For rowCount = 1 To endRowNo  
  11.         ' 替換當(dāng)前行模板內(nèi)容  
  12.         maxReplaceCount = 2   ' 有幾處替換就寫幾,例子中有兩處,就寫2  
  13.         newBody = Cells(rowCount, 3)  
  14.   
  15.         For replaceCount = 1 To maxReplaceCount  
  16.             pattern = "[==" & CStr(replaceCount) & "==]"  
  17.             newBody = WorksheetFunction.Substitute(newBody, pattern, Cells(rowCount, 4 + replaceCount))  
  18.         Next  
  19.         ' 替換好了,發(fā)郵件咯!  
  20.         SendMail Cells(rowCount, 1), Cells(rowCount, 2), newBody, Cells(rowCount, 4)  
  21.           
  22.     Next  
  23. End Sub  


注意:上面“maxReplaceCount = 2"這一行代碼,2需要改成你自己的值,替換幾個(gè)地方就寫幾(新添加了幾個(gè)列就寫幾)上面添加了E、F兩列,就是2,如果你添加了3處替換(E、F、G列),就寫3.





不過(guò),對(duì)于需要重復(fù)替換的內(nèi)容,不需要添加新列,例如,《大話西游》在郵件中出現(xiàn)了兩次,可以重復(fù)使用[==2==]來(lái)代表。








3. 如何發(fā)送多附件


在實(shí)際應(yīng)用場(chǎng)景中可能需要發(fā)送多封附件,其實(shí)很簡(jiǎn)單,將SendMail子程序修改成下面的樣子即可:



  1. ' 發(fā)送單個(gè)郵件的子程序  
  2. Sub SendMail(ByVal to_who As StringByVal subject As StringByVal body As StringByVal attachement As String)  
  3.     Dim objOL As Object  
  4.     Dim itmNewMail As Object  
  5.     Dim attaches  
  6.     Dim attach  
  7.       
  8.     '引用Microsoft Outlook 對(duì)象  
  9.     Set objOL = CreateObject("Outlook.Application")  
  10.     Set itmNewMail = objOL.CreateItem(olMailItem)  
  11.     With itmNewMail  
  12.         .subject = subject  '主旨  
  13.         .HTMLbody = body   '正文本文  
  14.         .To = to_who  '收件者  
  15.         .Display  '啟動(dòng)Outlook發(fā)送窗口  
  16.         attaches = Split(attachement, ";")  
  17.           
  18.         For Each attach In attaches  
  19.             If (Len(attach) > 0) Then  
  20.                 .Attachments.Add attach  
  21.             End If  
  22.         Next  
  23.         SetTimer 0, 0, 0, AddressOf WinProcA  
  24.     End With  
  25.       
  26.     Set objOL = Nothing  
  27.     Set itmNewMail = Nothing  
  28. End Sub  
在Excel的附件列(第三列),多個(gè)附件用半角的分號(hào)分隔開(kāi)(是”;",不是”;“),例如:


c:\doc\畢業(yè)證書(shū)附件.jpg;c:\doc\校方證明書(shū).docx










最終代碼如下:


匯總了批量替換、彩色郵件、多附件功能



  1. Public Declare Function SetTimer Lib "user32" _  
  2.         (ByVal hwnd As LongByVal nIDEvent As LongByVal uElapse As LongByVal lpTimerfunc As LongAs Long  
  3. Public Declare Function KillTimer Lib "user32" _  
  4.         (ByVal hwnd As LongByVal nIDEvent As LongAs Long  
  5. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)  
  6.   
  7.   
  8.   
  9.   
  10. Function WinProcA(ByVal hwnd As LongByVal uMsg As LongByVal idEvent As LongByVal SysTime As LongAs Long  
  11.     KillTimer 0, idEvent  
  12.     DoEvents  
  13.     Sleep 100  
  14.     '使用Alt+S發(fā)送郵件,這是本文的關(guān)鍵之處,免安全提示自動(dòng)發(fā)送郵件全靠它了  
  15.     Application.SendKeys "%s"  
  16. End Function  
  17.   
  18.   
  19. ' 發(fā)送單個(gè)郵件的子程序  
  20. Sub SendMail(ByVal to_who As StringByVal subject As StringByVal body As StringByVal attachement As String)  
  21.     Dim objOL As Object  
  22.     Dim itmNewMail As Object  
  23.     Dim attaches  
  24.     Dim attach  
  25.       
  26.     '引用Microsoft Outlook 對(duì)象  
  27.     Set objOL = CreateObject("Outlook.Application")  
  28.     Set itmNewMail = objOL.CreateItem(olMailItem)  
  29.     With itmNewMail  
  30.         .subject = subject  '主旨  
  31.         .HTMLbody = body   '正文本文  
  32.         .To = to_who  '收件者  
  33.         .Display  '啟動(dòng)Outlook發(fā)送窗口  
  34.         attaches = Split(attachement, ";")  
  35.           
  36.         For Each attach In attaches  
  37.             If (Len(attach) > 0) Then  
  38.                 .Attachments.Add attach  
  39.             End If  
  40.         Next  
  41.         SetTimer 0, 0, 0, AddressOf WinProcA  
  42.     End With  
  43.       
  44.   
  45.   
  46.   
  47.     Set objOL = Nothing  
  48.     Set itmNewMail = Nothing  
  49. End Sub  
  50.   
  51.   
  52.   
  53. '批量發(fā)送郵件  
  54. Sub BatchSendMail()  
  55.     Dim rowCount, endRowNo  
  56.     Dim newBody  
  57.     Dim replaceCount, maxReplaceCount  
  58.     Dim pattern  
  59.     endRowNo = Cells(1, 1).CurrentRegion.Rows.Count  
  60.       
  61.     '逐行發(fā)送郵件  
  62.     For rowCount = 1 To endRowNo  
  63.         ' 替換當(dāng)前行模板內(nèi)容  
  64.         maxReplaceCount = 2   ' 有幾處替換就寫幾,例子中有兩處,就寫2  
  65.         newBody = Cells(rowCount, 3)  
  66.   
  67.         For replaceCount = 1 To maxReplaceCount  
  68.             pattern = "[==" & CStr(replaceCount) & "==]"  
  69.             newBody = WorksheetFunction.Substitute(newBody, pattern, Cells(rowCount, 4 + replaceCount))  
  70.         Next  
  71.         ' 替換好了,發(fā)郵件咯!  
  72.         SendMail Cells(rowCount, 1), Cells(rowCount, 2), newBody, Cells(rowCount, 4)  
  73.           
  74.     Next  
  75. End Sub  









































參考文獻(xiàn):





http://www.officefans.net/cdb/viewthread.php?tid=53888




本文發(fā)送郵件過(guò)程中不會(huì)彈出安全提示框,發(fā)件速度極快;)





網(wǎng)友反饋:





  • 發(fā)件人:angel3814

  • 時(shí)間:2013-01-28 10:35:30



您好,經(jīng)過(guò)測(cè)試,該方法對(duì)于大量發(fā)送郵件(大于100封。幾十封沒(méi)有問(wèn)題。)有一些問(wèn)題,因?yàn)槌绦虮仨氃诮⑼瓿伤衱ord發(fā)送窗口后,才會(huì)統(tǒng)一alt+S發(fā)送,很容易造成內(nèi)存不足,并且,最后的alt+S便不再執(zhí)行,在實(shí)際應(yīng)用中,我只能再寫一個(gè)按鈕,每次發(fā)送5封,發(fā)送完成計(jì)數(shù)+5,手工再點(diǎn);想跟您請(qǐng)教,是否能有更好的改進(jìn)方法?




非常感謝angel3814提供的解決方案:


  1. Sub BatchSendMail()  
  2.     Dim rowCount, endRowNo, csheet As Worksheet, ssheet As Worksheet, i As Integer, j As Integer  
  3.     endRowNo = Cells(1, 1).CurrentRegion.Rows.Count  
  4.     '逐行發(fā)送郵件  
  5.     Set csheet = Worksheets("郵件內(nèi)容")  
  6.     Set ssheet = Worksheets("發(fā)送")  
  7.     i = ssheet.Cells(2, 1).Value  
  8.     j = ssheet.Cells(2, 2).Value  
  9.       
  10.     For rowCount = i To j  
  11.         SendMail csheet.Cells(rowCount, 1), csheet.Cells(rowCount, 2), csheet.Cells(rowCount, 3), csheet.Cells(rowCount, 4)  
  12.     Next  
  13.     ssheet.Cells(2, 1).Value = i + 5  
  14.     ssheet.Cells(2, 2).Value = j + 5  
  15. End Sub  











點(diǎn)一次,自動(dòng)+5,再點(diǎn)


之所以用5,是測(cè)試發(fā)現(xiàn),10以上,就有很大幾率alt+S事件不生效(可能還是延遲問(wèn)題?)


====


另外,對(duì)于希望批量發(fā)送郵件的同學(xué),可以不用把思維局限在Outlook上。如果你知道公司的郵件服務(wù)器的pop3地址,不妨用命令行工具來(lái)實(shí)現(xiàn)郵件的批量自動(dòng)發(fā)送。


例如:Blat:http://www.blat.net/syntax/syntax.html


先用任意工具將一封封的郵件準(zhǔn)備好,保存為一個(gè)個(gè)文本文件,然后用Blat逐個(gè)循環(huán)發(fā)送即可。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
如何用VB.NET控制Excel單元格裡的內(nèi)容
批量發(fā)送帶不同附件的郵件,試試這個(gè)方法吧
VBA 中發(fā)送郵件(一. 使用 Outlook 組件)
直接用通訊錄Excel群發(fā)電子郵件_Excel_辦公軟件
Excel259個(gè)常用宏
EXCEL宏代碼大全
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服