相关文章推荐
爱玩的感冒药  ·  中华人民共和国增值税暂行条例·  2 年前    · 
爱健身的木瓜  ·  漏洞复现--致远 M3 反序列化 ...·  2 年前    · 
拉风的大熊猫  ·  PHP: json_decode - Manual·  3 年前    · 
飘逸的牛肉面  ·  电改油加持,销量能涨点?零跑C11增程版配置 ...·  3 年前    · 
憨厚的圣诞树  ·  美哉!2021年杭州市中小学生戏剧、舞蹈比赛 ...·  3 年前    · 
Code  ›  VBA: 将单元格区域作为邮件正文发送到指定邮箱开发者社区
https://cloud.tencent.com/developer/article/2409252
细心的手术刀
3 月前
Exploring

VBA: 将单元格区域作为邮件正文发送到指定邮箱

腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
发布
Exploring
社区首页 > 专栏 > VBA: 将单元格区域作为邮件正文发送到指定邮箱

VBA: 将单元格区域作为邮件正文发送到指定邮箱

作者头像
Exploring
发布 于 2024-04-15 15:33:53
发布 于 2024-04-15 15:33:53
3K 0
举报
文章被收录于专栏: 数据处理与编程实践 数据处理与编程实践

文章背景: 在工作中,有时需要将 单元格区域 的内容作为邮件正文发送到指定邮箱,如果希望邮件正文中的单元格区域带表格样式,则需要将其转换为html格式。

系统:Win10

发件邮箱:Outlook 365

VBA代码如下:

代码语言: javascript
复制
Option Explicit
Sub 发送邮件()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("test") '将"test"替换为你要操作的工作表名称
    '设置邮件参数
    Dim outlookApp As Object
    Set outlookApp = CreateObject("Outlook.Application")
    Dim mailItem As Object
    Set mailItem = outlookApp.CreateItem(0)
    With mailItem
        .To = "xxx" '将"xxx"替换为实际的收件人邮箱地址
        .Subject = "测试数据的最新日期" '将"邮件主题"替换为实际的邮件主题
        .HTMLBody = "详情如下:" & RangetoHTML(ws.Range("A1:G4")) '使用HTML格式的正文
        .Send '发送邮件
    End With
    '释放对象
    Set mailItem = Nothing
    Set outlookApp = Nothing
End Sub
Function RangetoHTML(rng As Range) As String
    '将单元格区域转化为HTML格式
    Dim fso As Object
    Dim ts As Object
    Dim TempFile As String
    Dim TempWB As Workbook
    ' 创建临时文件和工作簿
    TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
    Set TempWB = Workbooks.Add(1)
    ' 复制范围到临时工作簿
    rng.Copy
    With TempWB.Sheets(1)
        '粘贴值和格式
        .Cells(1).PasteSpecial Paste:=8
        .Cells(1).PasteSpecial xlPasteValues, , False, False
        .Cells(1).PasteSpecial xlPasteFormats, , False, False
        .Cells(1).Select
        '清除剪切板
        Application.CutCopyMode = False
        '删除可能存在的绘图对象
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With
    ' 保存临时工作簿为HTML文件
    With TempWB.PublishObjects.Add( _
         SourceType:=xlSourceRange, _
         fileName:=TempFile, _
         Sheet:=TempWB.Sheets(1).Name, _
         Source:=TempWB.Sheets(1).UsedRange.Address, _
         HtmlType:=xlHtmlStatic)
        .Publish (True)
    End With
    ' 读取HTML文件内容
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    RangetoHTML = ts.ReadAll
    ts.Close
    ' 删除临时文件和工作簿
    fso.DeleteFile TempFile
    TempWB.Close savechanges:=False
 
推荐文章
爱玩的感冒药  ·  中华人民共和国增值税暂行条例
2 年前
爱健身的木瓜  ·  漏洞复现--致远 M3 反序列化 mobile_portal RCE_m3反序列化-CSDN博客
2 年前
拉风的大熊猫  ·  PHP: json_decode - Manual
3 年前
飘逸的牛肉面  ·  电改油加持,销量能涨点?零跑C11增程版配置曝光_车家号_发现车生活_汽车之家
3 年前
憨厚的圣诞树  ·  美哉!2021年杭州市中小学生戏剧、舞蹈比赛,滨江区这些学校获奖了~
3 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号