ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] OUTLOOK发送附件【未解决】

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-3-5 15:37 | 显示全部楼层 |阅读模式
请教各位大侠,我想用outlook vba自动成批发送邮件,并添加附件,写了一个程序,这样我就可以发送附件了,但是问题是:
1、每次只能发送相同内容
2、如果附件不存在的话就会发生错误
我想要做到的是,1)可以运行宏的时候,可以将不同文件发送给不同的人,大概40个。2)如果某个附件不存在,则不发送这个人,其他的人还继续发送,或者在内容中写上"今天没有报告"。

每天都要发送40多个报告,太痛苦了,谢谢各位大侠了,小弟感激不尽!!
Sub SendMail()
Dim ItemUsageEmail As Outlook.MailItem
Set ItemUsageEmail = Application.CreateItem(olMailItem)
With ItemUsageEmail
.To = "123@163.com"
.Subject = "Report"
.Body = "This is a example"
.Attachments.Add "d:\bbb\2.docx"
.Display
End With
End Sub

[ 本帖最后由 thierryco 于 2009-3-5 15:58 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-5 15:46 | 显示全部楼层
哇,才这几分钟,就有这么多点击率了,多些大家的支持,相信我的问题一定能解决了~~

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-5 15:58 | 显示全部楼层
第一个问题我想了下,用笨办法,复制40个这样的语句,把DIM的文件名更改下就可以了,最关键的就是判断是否有附件,然后自动选择是否发送

TA的精华主题

TA的得分主题

发表于 2009-3-5 20:21 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-6 00:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 aaaaabbbbb 于 2009-3-5 20:21 发表
请参考以下帖子.

http://club.excelhome.net/thread-400669-1-1.html



上面的代码我就是参考以上帖子得来的,关键我的问题没有得到解决。

TA的精华主题

TA的得分主题

发表于 2009-3-6 23:28 | 显示全部楼层
这个帖子里的代码可比你的要复杂多了,你的是最简单的发邮件的代码 . EXCEL里判断一下是否有附件的路径,如是空,则跳过,不给前面的地址发送.

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-8 00:38 | 显示全部楼层
楼上说的那个帖子的程序我运行不正常啊

TA的精华主题

TA的得分主题

发表于 2009-3-10 23:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
有什么问题?

TA的精华主题

TA的得分主题

发表于 2009-3-12 11:44 | 显示全部楼层
Sub SendMail()


MMyNames = Array("张三@163.com", "李四@tom.com", "王五@hotmail.com") '收件人地址
MyDocuments = Array("张三.doc", "李四.doc", "王五.doc") '附件文件名,注意与收件人的一一对应关系

For DCount = 0 To UBound(Mynames) '设定循环次数,即收件人数。

    MyFile = Dir("d:\bbb\" & MyDocuments(DCount)) '尝试从硬盘提取附件,逐个检测附件是否存在。
   
    If Len(MyFile) > 0 Then '如果附件存在就进入发邮件程序。否则忽略。
   
     Call Sendthis(MyNames(Dcount), MyDocuments(Dcount))
        
   
    End If

Next Dcount

End Sub


Sub Sendthis(ByVal MyName, ByVal MyDocument As String)
Dim ItemUsageEmail As Outlook.MailItem
Set ItemUsageEmail = Application.CreateItem(olMailItem)
With ItemUsageEmail
        .To = MyName  '提取相应的收件人,发送邮件。
        .Subject = "Report"
        .Body = "This is a example"
        .Attachments.Add "d:\ddd\" & MyDocument
        '.Display
        .Send
        End With
ItemUsageEmail = Nothing
End Sub

[ 本帖最后由 roof 于 2009-3-14 13:50 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-14 08:52 | 显示全部楼层
原帖由 roof 于 2009-3-12 11:44 发表


试试这个吧。我没有outlook,不能测试。

Sub SendMail()
Dim ItemUsageEmail As Outlook.MailItem
Set ItemUsageEmail = Application.CreateItem(olMailItem)

MyNames = Array("张三@163.com", "李四@tom ...

谢谢帮助,已经非常感激了,已经很接近我的想法了,不过出现两个文件以上附件都有的时候,就会出现错误;

例如,张三.doc和李四.doc两个文件都有,发送就显示错误,显示出来只能发送一个,并且,将张三.doc发送给李四@tom了并非,张三@163.com。如果只有其中一个文件,则一点问题都没有。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-22 19:49 , Processed in 0.038097 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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