养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

VBA利用Notes自动发送邮件

时间:2024-09-30 23:38:56

工作中经常会遇到批量发送邮件的情况,重复性操作高。如果能利用VBA函数通过Notes邮箱自动发送,将会大大提高工作效率。

工具/原料

Notes邮箱

Excel

方法/步骤

1、新建Excel文件,打开后另存为Test.xlsm(启用宏的文档)格式,如图所示。

VBA利用Notes自动发送邮件

2、在键盘上按Alt+F11,弹出VBA代码编辑器,在当前Excel的文件目录下点击鼠标右键,弹出选择框,选择插入-->模块。如图所示。

VBA利用Notes自动发送邮件

3、添加如下函数。PrivateSubSendNotes怡觎现喾Mail(SubjectAsString,AttachmentAsString,Reci禊诬娱飑pientAsString,BodyTextAsString,SaveItAsBoolean,BCCAsString)'设置对象属性SetuptheobjectsrequiredforAutomationintolotusnotesDimMaildbAsObject'ThemaildatabaseDimUserNameAsString'ThecurrentusersnotesnameDimMailDbNameAsString'THecurrentusersnotesmaildatabasenameDimMailDocAsObject'ThemaildocumentitselfDimAttachMEAsObject'TheattachmentrichtextfileobjectDimSessionAsObject'ThenotessessionDimEmbedObjAsObject'Theembeddedobject(Attachment)'创建Notes会话SetSession=CreateObject("Notes.NotesSession")'就想帮助文件里面提到的那样,COM用户必须先初始化会话方可继续Domino对象的操控,仅适用于5.x以上版本.'Session.Initialize("Ncut159")'取得用户名并计算邮件文件名'在某些情况,假如你传递一个空字符串到MailDBname变量,一样能够发送邮件,只要ID口令正确就可以了.UserName=Session.UserName'MailDbName=Left$(UserName,1)&Right$(UserName,(Len(UserName)-InStr(1,UserName,"")))&".nsf"MailDbName=Cells(1,8).Text'打开Notes邮箱SetMaildb=Session.GetDatabase("",MailDbName)IfMaildb.IsOpen=TrueThen'判断已经打开ElseMaildb.OPENMAILEndIf'创建新邮件SetMailDoc=Maildb.CreateDocumentMailDoc.Form="Memo"MailDoc.sendto=Recipient'如果想把邮件发给几个人,用抄送或者密送就可以了:MailDoc.BlindCopyTo=BCCMailDoc.Subject=SubjectMailDoc.Body=BodyTextMailDoc.SaveMessageOnSend=SaveIt'设置嵌入对象,添加附件IfAttachment<>""ThenSetAttachME=MailDoc.CreateRichTextItem("Attachment")SetEmbedObj=AttachME.EmbedObject(1454,"",Attachment,"Attachment")'Attachment格式为:c:/mydocuments/report.doc'下一行要注释掉,不然会出现"RichtextitemAttachmentalreadyexists."的错误提示'MailDoc.CreateRichTextItem("Attachment")EndIf'发送文档MailDoc.PostedDate=Now()'加上PostedDate,邮件就会出现在发件箱MailDoc.Send0,Recipient'清理状态SetMaildb=NothingSetMailDoc=NothingSetAttachME=NothingSetSession=NothingSetEmbedObj=NothingEndSub

VBA利用Notes自动发送邮件

VBA利用Notes自动发送邮件

4、4使用fo筠续师诈r循环引用该方法Sub批量发邮件()'每次发一人的资料DimrngAsRange,MyMailAsS墉掠载牿tringForEachrngInRange([b2],Cells(Rows.Count,2).End(xlUp))CallSendNotesMail("未收到hardcopy报销","",rng.Offset(0,1).Text,"Dear"&rng.Offset(0,-1)&"您金额为"&rng.Text&"元的报销"&"超过1个月仍未收到hardcopy,为了您的报销尽快处理,烦请跟进解决,谢谢您的支持与配合。",True,"")NextEndSub

5、5基础数据准备A列为名字,B列为对应数据,C列为邮箱。H1为对应邮箱nsf的路径。一般在C:\notesdata\mail10\***.nsf

VBA利用Notes自动发送邮件

© 一点知识