ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5753|回复: 3

[求助] 如何用VBA发送带格式的邮件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-9-12 17:08 | 显示全部楼层 |阅读模式
我需要将下面表格中的内容通过宏代码直接连接到outlook发送邮件,但是邮件里面内容需要保留表格中原来的格式,请大神帮忙看看这个代码要如何写才行,谢谢!

  大家好!
  附件为2017年P9第一次预检  薪资分录凭证,请大家检查确认。
  如有问题,请先联系本地市场HR
  如市场HR不能解决,再请市场HR反馈到系统支持团队  ,非常感谢!
   
  1.          所属期间、法人公司。
  2、  具体差异情况
  3.          如与福利相关,请提供子账。
   
   

TA的精华主题

TA的得分主题

发表于 2017-9-12 20:33 | 显示全部楼层
表格什么格式  要有边框  ??

TA的精华主题

TA的得分主题

发表于 2017-9-18 21:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
给你个思路,邮件用HTML格式,表格要用HTML来布局。

TA的精华主题

TA的得分主题

发表于 2017-9-19 10:15 | 显示全部楼层
你应该是用的Excel来做表的把,用下面的自定义函数RangetoHTML加入模块中,完了使用发送邮件调用
自定义函数就可以了。勾选VBA的工具—>引用—>microsoft  outlook 16.0 object library

Public Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' offic 2016
    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"  '设置临时网页文件名称

    '复制单元格中内容,增加一个临时工作薄保存
    rng.Copy
    Set TempWB = Workbooks.Add(1)
    With TempWB.Sheets(1)
        .Cells(1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False, Transpose:=False   '调整单元格大小,且粘贴格式。
        .UsedRange.Value = TempWB.Sheets(1).UsedRange.Value         '粘贴为值
        .Columns("A:B").Delete Shift:=xlToLeft
        .Cells(1).Select
        Application.CutCopyMode = False
        On Error Resume Next
        .DrawingObjects.Visible = True
        .DrawingObjects.Delete
        On Error GoTo 0
    End With

    '把选中临时excel中内容发布到HMTL文件上
    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

    '把所有内容读取到RangetoHTML中
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
    RangetoHTML = ts.ReadAll
    ts.Close
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", "align=left x:publishsource=")  '把中心对齐变为左端对齐

    '关闭TempWB且不保存
    TempWB.Close SaveChanges:=False

    '删除HTM文件
    Kill TempFile
   
    '释放内存中临时文件
    Set ts = Nothing
    Set fso = Nothing
    Set TempWB = Nothing
End Function

sub 发送邮件()
    Dim temp As Object, newmail As Object, strg As String
    Set temp = CreateObject("outlook.application")
    Set newmail = temp.CreateItem(0)    '使用outlook创建新邮件
        With newmail
            .To =  "...@....com"         '收件人
            .CC =   "....@....com"       '抄送人
            .Subject =                       '邮件标题
            .Body = RangetoHTML()     '邮件正文,括号中放入想发邮件的单元格范围
            .Attachments.Add “D:/......./123.pdf”    '添加附件
            .Send
        End With
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-23 00:06 , Processed in 0.038115 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表