首页 > 解决方案 > 查找多列的匹配单元格值并发送有关匹配信息的邮件

问题描述

我有一个包含不同列的 Excel 文件,如下所示(名称、角色、电子邮件)。我想搜索多次重复的角色(来自角色列),并显示相应的值(来自名称列)。最后,应将有关角色信息的邮件发送到相应的邮件 ID(在“电子邮件”列中提到)。需要同样的VBScript方法。

姓名 角色 电子邮件
Ram(z123)MC_PLM_Team Architect (TA), MC_PLM_Software Developer Sh.ram@abc.com
Shm(Z003)MC_PLM_首席产品负责人 (CPO) Gh.sham@xyz.com
Arn(z789)MC_SW 开发人员/设计师 ES/HMI/NET Kh.arun@wxy.com
Ach(z234)MC_PLM_Team Architect (TA), MC_PLM_Software Developer Ch.Achal@klm.com

标签: excelvbscript

解决方案


感谢您的意见。是的,我花了一些时间快速了解 VB Internals。写了脚本,满足了我的要求。这是我的第一个脚本版本,将进一步增强。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    intRows = Application.ActiveSheet.UsedRange.Rows.Count
    intCols = Application.ActiveSheet.UsedRange.Columns.Count

    For i = 12 To intRows
     resName = Application.ActiveSheet.Cells(i, 3).Value
     primRole = Application.ActiveSheet.Cells(i, 31).Value
     emailID = Application.ActiveSheet.Cells(i, 49).Value

     If resName <> "" Then
        MsgBox resName & vbNewLine & primRole & vbNewLine & emailID
     End If

    Next

    Set outApp = CreateObject("Outlook.Application")
    Set outMail = outApp.CreateItem(0)

    strBody = "Dear XYZ" & vbNewLine & "email from outlook" & vbNewLine & "Best Regards," & vbNewLine & "XYZ"
'   
    outMail.To = "sh.ram@abc.com"
    outMail.CC = ""
    outMail.BCC = ""
    outMail.Subject = "Subject Test VBA"
    outMail.Body = strBody
    outMail.Send

    Set outMail = Nothing
    Set outApp = Nothing


End Sub

推荐阅读