ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何用VBA将邮件内容HTML化

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2012-8-9 22:43 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:邮件应用开发
  1. Sub 发邮件()
  2.     Dim OutlookApp As Outlook.Application
  3.     Dim MItem As Outlook.MailItem
  4.     Dim EmailAddr As String
  5.     Dim subj As String
  6.     Dim Msg As String
  7.    
  8.     Set OutlookApp = Outlook.Application
  9.    
  10.     EmailAddr = "test@163.com"

  11.     subj = "我是主题"
  12.    
  13.     Msg = "您好" & vbCrLf & vbCrLf
  14.     Msg = Msg & "我的正文如下:" & vbCrLf & vbCrLf
  15.     Msg = Msg & "我的签名" & vbCrLf
  16.    
  17.     MsgBox Msg
  18.     Set MItem = OutlookApp.createItem(olMailItem)
  19.     With MItem
  20.         .To = EmailAddr
  21.         .Subject = subj
  22.         .Body = Msg
  23.         .Save
  24.     End With
  25.             
  26. End Sub
复制代码

我想在正文中插入一个2列4行的表格,并且第一行文字是粗体,但不太熟悉HTML方面的语句,请问老师我该如何进阶?Outlook中可以用HTML的语言吗?有例更好。谢谢!

TA的精华主题

TA的得分主题

发表于 2012-8-10 11:41 | 显示全部楼层
告诉你个小技巧,如果对HTML语言不是很熟悉的话,可以在Word或者Excel里把要做的东西做好后保存成“HTML”文件格式,然后使用记事本打开这个文件,就可以得到HTML代码了。不过通常由Office软件创建的见面文件,里面包含了很多重复的CSS代码,所以在Word里操作时尽量少使用格式,这样代码不会太冗余。

得到这些代码后,可以使用一个变量,如“Msg”来将他们保存起来,然后在“MItem"对象里使用”.HTMLBody=Msg"就可以了。

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-8-15 07:26 | 显示全部楼层
本帖最后由 civl 于 2012-8-15 07:28 编辑
  1. Function GetBoiler(ByVal sFile As String) As String
  2. '作者:Dick Kusleika
  3.     Dim fso As Object
  4.     Dim ts As Object
  5.     Set fso = CreateObject("Scripting.FileSystemObject")
  6.     Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
  7.     GetBoiler = ts.readall
  8.     ts.Close
  9. End Function
  10. Sub Mail_Outlook_With_Signature_Html()
  11. ' 别忘记在模块中加上GetBoiler函数
  12. ' 可以在Office 2000-2010版本中通用

  13.     Dim OutApp As Object
  14.     Dim OutMail As Object
  15.     Dim strbody As String
  16.     Dim SigString As String
  17.     Dim Signature As String

  18.     Set OutApp = CreateObject("Outlook.Application")
  19.     Set OutMail = OutApp.CreateItem(0)

  20.     strbody = "<H3><B>尊敬的XXX</B></H3>" & _
  21.               "我是正文.<br>" & _
  22.               "所以你看见了我,说明宏正确地运行了.<br>" & _
  23.               "<A HREF=""http://club.excelhome.net/forum.php"">ExcelHome</A>" & _
  24.               "<br><br><B>Regards</B>"

  25.     '建立新邮件.htm(以html格式保存的附件),请查看自己系统中签名是什么,再替换“建立新邮件”这五个字。
  26.     '签名保存在windows的每个用户appdata目录下的文件,每个人都不同。具体是
  27.    
  28.     'Win7中Outlook的签名位置
  29.     'C:\用户\你的大名\AppData\Roaming\Microsoft\Signatures
  30.    
  31.     'WinXP中Outlook的签名位置
  32.     'C:\Documents and Settings\你的大名\Application Data\Microsoft\Signatures
  33.    
  34.     '获取方式是使用Environ函数,并指定appdata作为需要搜索的系统文件夹
  35.     SigString = Environ("appdata") & _
  36.      "\Microsoft\Signatures\建立新邮件.htm"

  37.     '但是,如果签名中有图片,必须做以下改动才能使图片不显示大叉,必须将“建立新邮件.html”文件中的图片地址改为绝对地址
  38.     '因为Oultlook保存签名时,html文件是使用如2行引用了相对地址作为图片超链接的
  39.         'src = "建立新邮件_files/image001.png
  40.         'src = "建立新邮件_files/image001.jpg
  41.     '你可以使用记事本打开“建立新邮件.html”,关键字为你的图片文件名称,"/"前的内容要替换为"",即绝对地址是
  42.     'Win7用户
  43.         'src = "C:\用户\你的大名\AppData\Roaming\Microsoft\Signatures\建立新邮件_files\image001.png
  44.         'src = "C:\用户\你的大名\AppData\Roaming\Microsoft\Signatures\建立新邮件_files\建立新邮件_files/image001.jpg
  45.     'WinXP用户
  46.         'src = "C:\Documents and Settings\你的大名\Application Data\Microsoft\Signatures\建立新邮件_files\image001.png
  47.         'src = "C:\Documents and Settings\你的大名\Application Data\Microsoft\Signatures\建立新邮件_files\建立新邮件_files/image001.jpg
  48.         
  49.     '就能正常地在签名中显示图片了
  50.    

  51.     '调用GetBoiler函数对Signature变量进行赋值
  52.     If Dir(SigString) <> "" Then
  53.         Signature = GetBoiler(SigString)
  54.     Else
  55.         Signature = ""
  56.     End If

  57.     On Error Resume Next
  58.     With OutMail
  59.         .To = "Test@office.com;billgates@microsoft.com" '主送
  60.         .CC = ""                                        '抄送
  61.         .BCC = ""                                       '密送
  62.         .Subject = "我是主题"                           '主题
  63.         .HTMLBody = strbody & "<br><br>" & Signature    'html格式正文
  64.         .display                                        '在Outlook界面显示该封待发送邮件
  65.         '.Attachments.Add ("C:\test.txt")               '附件
  66.         '.save                                          '保存到草稿箱
  67.         '.send                                          '直接发送
  68.     End With

  69.     On Error GoTo 0
  70.    
  71.     Set OutMail = Nothing
  72.     Set OutApp = Nothing
  73.    
  74. End Sub

复制代码

我做好了,能正常发送html格式的邮件,包括签名。
签名图片要自己在电脑里将相对引用改为绝对引用,才能正确显示
testEmail.rar (17.25 KB, 下载次数: 688)
参考的代码地址:http://www.rondebruin.nl/mail/folder3/signature.htm
作者是Dick Kusleika,我作了少许翻译

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-11-13 13:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
       Mark.

TA的精华主题

TA的得分主题

发表于 2012-11-17 14:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-7-12 20:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
sunya_0529 发表于 2012-8-10 11:41
告诉你个小技巧,如果对HTML语言不是很熟悉的话,可以在Word或者Excel里把要做的东西做好后保存成“HTML”文 ...

谢谢高人指点  这个方法找了好久  研究中

TA的精华主题

TA的得分主题

发表于 2014-7-12 20:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
civl 发表于 2012-8-15 07:26
我做好了,能正常发送html格式的邮件,包括签名。
签名图片要自己在电脑里将相对引用改为绝对引用,才能 ...


其中的“签名”效果是怎样的? 可以放到最后么?
即 如下结果按照下面的顺序

HTMLBody

Attachments

Signature   

TA的精华主题

TA的得分主题

发表于 2015-1-24 17:10 | 显示全部楼层
civl 发表于 2012-8-15 07:26
我做好了,能正常发送html格式的邮件,包括签名。
签名图片要自己在电脑里将相对引用改为绝对引用,才能 ...

你好,

我按你说的,用TXT打开HTML,并改了路径。
        'src = "C:\用户\你的大名\AppData\Roaming\Microsoft\Signatures\建立新邮件_files\image001.png
        'src = "C:\用户\你的大名\AppData\Roaming\Microsoft\Signatures\建立新邮件_files\建立新邮件_files/image001.jpg
但我签名中图片还是不显示。
请问是不是还有其它设置?

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-29 07:33 | 显示全部楼层
cccc5900 发表于 2015-1-24 17:10
你好,

我按你说的,用TXT打开HTML,并改了路径。

绝对引用图片的地址必须正确,按你写的,可能是有个符号不对“/”

TA的精华主题

TA的得分主题

发表于 2015-1-29 11:19 | 显示全部楼层
civl 发表于 2015-1-29 07:33
绝对引用图片的地址必须正确,按你写的,可能是有个符号不对“/”

多谢朋友!!!
我改了路径,现在在OUTLOOK端中可以显示签名图片了。
但网页中还是没法显示。
别外里面有个JPG. PNG.两种格式。是什么情况?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-22 20:52 , Processed in 0.051484 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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