使用VBA将两个范围从excel复制到outlook电子邮件中

使用VBA将两个范围从excel复制到outlook电子邮件中,excel,vba,outlook,automation,Excel,Vba,Outlook,Automation,我使用一个非常酷的VBA代码将行发送给范围内的每个人(Ron de Bruin)。它工作得很好! 然而,我想更新这段代码。我有两个不同的工作表,其中包含CQ和NQ的数据。我想给出现在一张或两张纸上的每个人发一封电子邮件,其中有两个不同的表格,一个是CQ,一个是空格,一个是NQ([1]:示例是我目前拥有的)。因此,接收电子邮件的人知道CQ和NQ数据之间的差异。 有人帮忙吗 谢谢 这是我的密码: Sub Send_Row_或_Rows_1() “在Excel 2000-2016中工作 Dim Ou

我使用一个非常酷的VBA代码将行发送给范围内的每个人(Ron de Bruin)。它工作得很好! 然而,我想更新这段代码。我有两个不同的工作表,其中包含CQ和NQ的数据。我想给出现在一张或两张纸上的每个人发一封电子邮件,其中有两个不同的表格,一个是CQ,一个是空格,一个是NQ([1]:示例是我目前拥有的)。因此,接收电子邮件的人知道CQ和NQ数据之间的差异。 有人帮忙吗

谢谢

这是我的密码:

Sub Send_Row_或_Rows_1()
“在Excel 2000-2016中工作
Dim OutApp作为对象
将邮件变暗为对象
变暗rng As范围
将灰烬作为工作表
将Cws设置为工作表
暗计数等于长
暗淡如长
模糊过滤范围
Dim FieldNum作为整数
将邮件地址设置为字符串
像弦一样暗的链子
作为字符串的模糊称呼
关于错误转到清理
Set-OutApp=CreateObject(“Outlook.Application”)
应用
.EnableEvents=False
.ScreenUpdate=False
以
'设置筛选表,也可以使用表(“MySheet”)
设置Ash=ActiveSheet
'设置筛选器范围和筛选器列(带名称的列)
设置FilterRange=Ash.Range(“A1:I”和Ash.Rows.Count)
FieldNum=1'筛选列=A,因为筛选范围从A开始
'为唯一列表添加工作表,并在A1中复制唯一列表
设置Cws=工作表。添加
FilterRange.Columns(FieldNum).AdvancedFilter_
操作:=xlFilterCopy_
CopyToRange:=Cws.Range(“A1”)_
CriteriaRange:=“”,唯一:=真
'唯一值的计数+标题单元格
Rcount=Application.WorksheetFunction.CountA(Cws.Columns(1))
'如果存在唯一值,则启动循环
如果Rcount>=2,则
对于Rnum=2,则为Rcount
'筛选FieldNum列上的FilterRange
FilterRange.AutoFilter字段:=FieldNum_
准则1:=Cws.Cells(Rnum,1).Value
'在MailInfo工作表中查找邮件地址
mailAddress=“”
出错时继续下一步
mailAddress=Application.WorksheetFunction_
VLookup(Cws.单元格(Rnum,1).值_
工作表(“邮件信息”).范围(“A1:B”和_
工作表(“邮件信息”).Rows.Count),2,False)
称呼=Application.WorksheetFunction_
VLookup(Cws.单元格(Rnum,1).值_
工作表(“邮件信息”).范围(“A1:C”和_
工作表(“邮件信息”).Rows.Count),3,False)
称呼=Application.WorksheetFunction_
VLookup(Cws.单元格(Rnum,1).值_
工作表(“邮件信息”).范围(“A1:D”和_
工作表(“邮件信息”).Rows.Count),4,False)
错误转到0
如果邮件地址为“”,则
使用Ash.AutoFilter.Range
出错时继续下一步
设置rng=.SpecialCells(xlCellTypeVisible)
错误转到0
以
Set-OutMail=OutApp.CreateItem(0)
StrBody=“”&“亲爱的”&问候&“,

”&_ “请您在周一之前检查并更新以下列表中的过期和风险交易?”&“

”&”_ “CQ交易:&”
“&” 出错时继续下一步 发邮件 .To=邮寄地址 .Subject=“过时管道”&日(日期)&“,”月(日期)&“,”年(日期)&”&称呼 .HTMLBody=StrBody&RangetoHTML(rng)&“谢谢,
斯蒂芬妮”&” .显示或使用“发送” 以 错误转到0 发送邮件=无 如果结束 '关闭自动过滤器 Ash.AutoFilterMode=False 下一个Rnum 如果结束 清理: 设置应用程序=无 Application.DisplayAlerts=False 删除 Application.DisplayAlerts=True 应用 .EnableEvents=True .ScreenUpdate=True 以 端接头 函数RangetoHTML(rng作为范围) “由Ron de Bruin于2006年10月28日更改 “2000-2016年在办公室工作 作为对象的Dim fso 将T作为对象 将文件设置为字符串 将TempWB设置为工作簿 TempFile=Environ$(“temp”)&“/”和格式(现在是“dd-mm-yy h-mm-ss”)&.htm” '复制范围并创建一个新工作簿,以超过中的数据 收到 Set TempWB=工作簿。添加(1) 带临时工作表(1) .单元格(1).粘贴特殊粘贴:=8 .单元格(1).粘贴特殊值,False,False .单元格(1).粘贴特殊xlPasteFormats,False,False .单元格(1)。选择 Application.CutCopyMode=False 出错时继续下一步 .DrawingObjects.Visible=True .DrawingObjects.Delete 错误转到0 以 '将工作表发布到htm文件 使用TempWB.PublishObjects.Add(_ SourceType:=xlSourceRange_ 文件名:=临时文件_ 工作表:=临时工作表(1).名称_