收件人邮箱地址(VBA-004:收发人匹配邮箱地址)

Posted

篇首语:成功由大量的失误铸就。本文由小常识网(cha138.com)小编为大家整理,主要介绍了收件人邮箱地址(VBA-004:收发人匹配邮箱地址)相关的知识,希望对你有一定的参考价值。

收件人邮箱地址(VBA-004:收发人匹配邮箱地址)

一、用户需求

1、表格介绍:

《Item》表为ID、发件人姓名、收件人姓名、邮件标题、邮件内容

《Item》

《NameList》表为ID、姓名、邮箱地址、邮箱签名

《NameList》

《Result》表为序号、发件人邮箱、收件人邮箱、邮件标题、邮件内容

《Result》

2、需求:

将《Item》表中的内容复制到《Result》表中,并将发件人姓名、收件人姓名,邮件内容的[CC]/[To]修改为对应的发件人邮箱地址、收件人邮箱地址、收发人姓名。

二、需求分析

该需求主要是数据匹配方面,但中间的难点为一行多个姓名如何去匹配、邮件内容对应匹配,因此需采用数组和字典来解决该问题,具体步骤如下:

1、设计字典dict,装载《NameList》的Name和Email,用来实现匹配姓名对应的邮箱地址;

2、设计姓名替换email的方法,具体逻辑如下:

数组arr装载《Item》表;使用split方法将To和CC的多人切换为单人数组使用字典进行匹配

3、设计邮件内容自动更换方法,使用Replace方法替换关键字

代码实现

Sub OutputResult()' 输出结果    Worksheets("Result").Activate    ActiveSheet.UsedRange.Offset(1).ClearContents    Dim arr, arr2, arr3, arr4(), dict As Object        Worksheets("NameList").Activate    arr2 = Range("b2:c" & [c9999].End(xlUp).Row)    Set dict = email(arr2)        Worksheets("Items").Activate    arr3 = Range(Cells(2, 1), Cells([e3000].End(xlUp).Row, 5))    For i = 1 To UBound(arr3, 1)        arr3(i, 5) = ReplaceContent(arr3(i, 5), arr3(i, 2), arr3(i, 3))        arr3(i, 1) = i        arr3(i, 2) = ReplaceEmail(arr3(i, 2), dict)        arr3(i, 3) = ReplaceEmail(arr3(i, 3), dict)    Next i        Worksheets("Result").Activate    [A2].Resize(UBound(arr3)) = WorksheetFunction.Index(arr3, 0, 1)    [B2].Resize(UBound(arr3)) = WorksheetFunction.Index(arr3, 0, 2)    [C2].Resize(UBound(arr3)) = WorksheetFunction.Index(arr3, 0, 3)    [E2].Resize(UBound(arr3)) = WorksheetFunction.Index(arr3, 0, 5)End SubFunction email(arr)' 生成邮件字典' arr:类型,数组    Dim dict  As Object    Set dict = CreateObject("scripting.dictionary")    For i = 1 To UBound(arr)        dict(arr(i, 1)) = arr(i, 2)    Next i    Set email = dictEnd FunctionFunction ReplaceContent(s, em, cc)' 自动替换收发人的姓名    If InStr(s, "[To]") > 0 Then        s = Replace(s, "[To]", em)    Else        s = Replace(s, "[CC]", cc)    End If    ReplaceContent = sEnd FunctionFunction ReplaceEmail(s, dict As Object)' 将姓名替换为email    Dim arr, i%, s1 As String    arr = Split(s, ";")    If UBound(arr) = -1 Then        s1 = ""    ElseIf UBound(arr) = 0 Then        s1 = dict.Item(s)    Else        For i = 0 To UBound(arr)            If i = 0 Then                s1 = dict.Item(arr(i))            Else                s1 = s1 & ";" & dict.Item(arr(i))            End If        Next i    End If    ReplaceEmail = s1End Function

相关参考

手机怎样申请个人邮箱(公司邮箱怎么申请?)

入职新公司的打工人,经常会被HR要求准准备个公司邮箱,方便日常工作沟通。那么公司邮箱是什么,公司邮箱怎么申请。现在很多职场人都在使用ZohoMail邮箱,邮箱是一种可以通过互联网收发信息并进行储存文件的服务,地址...

手机怎么注册申请个人邮箱(个人邮箱注册步骤?163邮箱地址怎么注册 注册个人邮箱有什么优势)

最近需要注册一个个人邮箱,问了周边朋友,给推荐了TOMVIP邮箱,那么如何注册邮箱地址呢?注册申请个人邮箱后有什么优势?邮箱地址怎么注册?邮箱地址是一个有身份属性的账号,所以一个符合自己喜欢的邮箱账号就会格外...

怎样申请email邮箱(邮箱格式怎么写地址,个人企业电子邮箱怎么注册申请)

有的人在第一次使用邮箱时,会遇到一个常见的问题:邮箱格式怎么写地址呢?其实,电子邮箱的格式都是有规律的,掌握好这个规律,无论是邮箱注册,还是给其他人写邮件,都会更加方便。那么,个人企业电子邮箱该怎么注...

电子邮箱地址怎么写

1、打开邮箱。2、输入对方的用户名。3、输入对方的电子邮件服务器地址即可。4、电子邮箱是指在网络中,可以自动接收网络任何电子邮箱所发的电子邮件,并能存储规定大小的等多种格式的电子文件。5、电子邮件最大的特点...

通讯地址怎么填

...广播城”。2、通讯地址是指能在信封、邮寄物品、电子邮箱等一切通过邮政方式或互联网发送的邮件上,注明并接收的有效实际地址。3、通讯地址一般由地区名,街道名及门牌号码组成;一般大型网站就可以注册免费的个人邮...

邮箱格式怎么写啊

1、一个完整的电子邮箱地址均由用户名和主机名两个部分组成,格式下:用户名@主机名.域名。2、中间用符号“@”(at)分开,左边为登录用户名,右边是完整的主机名,它由主机名与域名组成。3、电子邮箱是指在网络中,可以...

注册邮箱账号(个人邮箱注册哪家好、商务邮箱注册、邮件注册、如何注册电子邮箱)

刚工作的第一天,领导说要你自己准备商务个人邮箱,以后办公使用,一脸懵逼的你不知何去何从,领导是在刁难你吗?当然不是,那么商务个人邮箱是什么?如何注册申请,邮箱怎么登录呢?今天给大家科普一下!商务个人邮...

注册邮箱账号(个人邮箱注册哪家好、商务邮箱注册、邮件注册、如何注册电子邮箱)

刚工作的第一天,领导说要你自己准备商务个人邮箱,以后办公使用,一脸懵逼的你不知何去何从,领导是在刁难你吗?当然不是,那么商务个人邮箱是什么?如何注册申请,邮箱怎么登录呢?今天给大家科普一下!商务个人邮...

怎么注册个人邮箱账号(个人邮箱注册哪家好、商务邮箱注册、邮件注册、如何注册电子邮箱)

刚工作的第一天,领导说要你自己准备商务个人邮箱,以后办公使用,一脸懵逼的你不知何去何从,领导是在刁难你吗?当然不是,那么商务个人邮箱是什么?如何注册申请,邮箱怎么登录呢?今天给大家科普一下!商务个人邮...

注册163邮箱账号申请注册(邮箱申请流程,163VIP邮箱申请哪个好?)

邮箱申请流程,VIP邮箱申请哪个好?邮箱申请注册官网入口在哪儿?新的一年就要“兔”步青云,Tomvip邮箱可以助你一臂之力!邮箱申请注册分分钟搞定~邮箱申请注册官网入口方法一:搜索框中输入邮箱名称,点击搜索找到官...