相关文章推荐
孤独的沙发  ·  Python 使用BrowserMob ...·  2 年前    · 
奋斗的毛豆  ·  java字符串中的“\u”是什么意思_百度知道·  3 年前    · 
有胆有识的勺子  ·  c++ 开源算法库-掘金·  3 年前    · 
爱跑步的野马  ·  [Java]如何遍历一个interface中 ...·  3 年前    · 
Code  ›  VBA: 将单元格区域作为邮件正文发送到指定邮箱开发者社区
https://developer.cloud.tencent.com/article/2409252?from=15425&policyId=undefined&traceId=&frompage=seopage
急躁的番茄
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
 
推荐文章
孤独的沙发  ·  Python 使用BrowserMob Proxy + Selenium 获取Ajax加密数据 - loren880898 - 博客园
2 年前
奋斗的毛豆  ·  java字符串中的“\u”是什么意思_百度知道
3 年前
有胆有识的勺子  ·  c++ 开源算法库-掘金
3 年前
爱跑步的野马  ·  [Java]如何遍历一个interface中的所有常量名_百度知道
3 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号