ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] Excel发邮件, 如何选择发件人(二选一),如何更改邮件的字体?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-6-17 14:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

  1. ' 发送单个邮件的子程序
  2. Sub SendMail(ByVal to_who As String, ByVal subject As String, ByVal body As String, ByVal attachement As String, ByVal CC As String)
  3.     Dim ObjOL As Object
  4.     Dim itmNewMail As Object
  5.     Dim mailaddress As String
  6.     'Dim OutMail As Outlook.MailItem
  7.     'Dim OutApp As Outlook.Application
  8.     '引用Microsoft Outlook 对象
  9.     Set ObjOL = CreateObject("Outlook.Application")
  10.     Set itmNewMail = ObjOL.CreateItem(olMailItem)
  11.     With itmNewMail
  12.         .subject = subject  '主旨
  13.         .body = body   '正文本文
  14.         .To = to_who  '收件者
  15.         .Attachments.Add attachement '附件,如果你不需要发送附件,可以把这一句删掉即可,Excel中的第四列留空,不能删哦
  16.         .CC = CC  '抄送
  17.         .SendUsingAccount = ObjOL.Session.Accounts.Item(2)
  18.         .Display  '启动Outlook发送窗口
  19.         'SetTimer 0, 0, 0, AddressOf WinProcA
  20.     End With
  21.     Set ObjOL = Nothing
  22.     Set itmNewMail = Nothing
  23. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-6-17 15:20 | 显示全部楼层
mineshine 发表于 2014-6-17 14:57

不管括号里面是1,还是2. 发送邮件都只用account1       .SendUsingAccount = ObjOL.Session.Accounts.Item(2)

在excel下改成Object后Sub Which_Account_Number()测试成功

说明一下, 在outlook下打开的VBA  这个两个account测试成功。Sub Mail_small_Text_Change_Account()

TA的精华主题

TA的得分主题

发表于 2014-6-17 15:31 | 显示全部楼层
tyxvba7529 发表于 2014-6-17 15:20
不管括号里面是1,还是2. 发送邮件都只用account1       .SendUsingAccount = ObjOL.Session.Accounts.It ...

你可以用给你的网页第一个代码举一反三
括号里面可以应用For...Next.....,迖到你要的用不同Accuount发送邮件。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-6-17 15:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
mineshine 发表于 2014-6-17 15:31
你可以用给你的网页第一个代码举一反三
括号里面可以应用For...Next.....,迖到你要的用不同Accuount发送 ...

感谢你的帮忙,我是需要用第二个账户发邮件的,这不用循环语句吧?
   在outlook下打开的VBA 用 Sub Mail_small_Text_Change_Account(), account(1)用第一个account发, account(2)用第二个账户发。 正确;
   在excel下的VBAaccount(1)用第一个account发, account(2)还是第一个账户发; 我需要第二个账户根据我excel里面的内容发邮件。

TA的精华主题

TA的得分主题

发表于 2014-6-17 15:41 | 显示全部楼层
tyxvba7529 发表于 2014-6-17 15:38
感谢你的帮忙,我是需要用第二个账户发邮件的,这不用循环语句吧?
   在outlook下打开的VBA 用 Sub Mai ...

以第一个程序测试得到结果是完整MailAddress吗?
如果是,.SendUsingAccount = "你的Maill@aa.aa"
这你可以自行测试吧?

自己试试,你行的,谢谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-6-18 09:49 | 显示全部楼层
mineshine 发表于 2014-6-17 15:41
以第一个程序测试得到结果是完整MailAddress吗?
如果是,.SendUsingAccount = "你的"
这你可以自行测试 ...

好的,你真是个好人。 等我好消息。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-6-20 09:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
mineshine 发表于 2014-6-17 15:41
以第一个程序测试得到结果是完整MailAddress吗?
如果是,.SendUsingAccount = "你的"
这你可以自行测试 ...

老师, 这样测试也不成功, 不知道问题出在哪里了。
Sub Which_Account_Number()这个测试是可以得到完整的mailaddress的

但.SendUsingAccount = "mailaddress"不可以

但Sub Mail_small_Text_Change_Account()在vbaProject.OTM那边测试是可以的, 难道是bug吗?

TA的精华主题

TA的得分主题

发表于 2014-6-20 10:37 | 显示全部楼层
tyxvba7529 发表于 2014-6-20 09:14
老师, 这样测试也不成功, 不知道问题出在哪里了。
Sub Which_Account_Number()这个测试是可以得到完整 ...

找到问题点了,在定义itmNewMail如果是Object,程序只当是物件,不是Outlook Account,
所以永遠以预设账户发邮件。

把itmNewMail定义Outlook.MailItem就可以指定以第二个账户发邮件。

首先请依13楼"VBA万岁"的说明引用Microsoft Outlook 12.0 Object Library以上的引用项目。

21楼代码改如下:

  1. ' 发送单个邮件的子程序
  2. Sub SendMail(ByVal to_who As String, ByVal subject As String, ByVal body As String, ByVal attachement As String, ByVal CC As String)
  3.     Dim ObjOL As Object
  4.    Dim itmNewMail As Outlook.MailItem
  5.     Dim mailaddress As String
  6.     'Dim OutMail As Outlook.MailItem
  7.     'Dim OutApp As Outlook.Application
  8.     '引用Microsoft Outlook 对象
  9.     Set ObjOL = CreateObject("Outlook.Application")
  10.     Set itmNewMail = ObjOL.CreateItem(olMailItem)
  11.     With itmNewMail
  12.         .subject = subject  '主旨
  13.         .body = body   '正文本文
  14.         .To = to_who  '收件者
  15.         .Attachments.Add attachement '附件,如果你不需要发送附件,可以把这一句删掉即可,Excel中的第四列留空,不能删哦
  16.         .CC = CC  '抄送
  17.         .SendUsingAccount = ObjOL.Session.Accounts.Item(2)
  18.         .Display  '启动Outlook发送窗口
  19.         'SetTimer 0, 0, 0, AddressOf WinProcA
  20.     End With
  21.     Set ObjOL = Nothing
  22.     Set itmNewMail = Nothing
  23. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-6-22 11:27 | 显示全部楼层
mineshine 发表于 2014-6-20 10:37
找到问题点了,在定义itmNewMail如果是Object,程序只当是物件,不是Outlook Account,
所以永遠以预设账 ...

好啦, 好啦。谢谢!!!!
知识的力量好强大!!!

TA的精华主题

TA的得分主题

发表于 2016-4-14 15:33 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 00:03 , Processed in 0.040856 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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