ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

关于第二期竞赛题答案的讨论---第10题。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2002-10-22 12:56 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原题: 问题十: 一个生产企业客户有很多经销商,每个月都有必须把对账单发给他经销商,他们使用Access作了一套程序,操作员每个月都要把每一个经销商的对账单手工复制—粘贴到邮件中,在发送出去。能不能编写一个程序,自动把每一个客户的对账单在Access中导出后调用MS Outlook发送出去。重要提示:您可以把数据导出为Word, Excel或者Text,也可以是直接把数据嵌到邮件内容中。[可在下载数据库的基础上完成] 分析: 此题涉及到access(准备和组织数据)和outlook(分发数据)。 access中有customers(客户基本信息)和order(定单)两张表。 首先需要你将这两张表做一个关联。因为customers里没有客户的购货信息但有基本信息,而定单里只有购货信息但没有客户的基本信息,所以必须将两张表做一个关联(通过customers id)。我的解决办法是做一个view。这样数据就准备完毕了。 下面是程序代码: Sub Send_Order_Mail() Dim cnn As ADODB.Connection Dim rst_cusid, rst_order_list As ADODB.Recordset Dim olkapp As Outlook.Application Dim newmail As MailItem Set olkapp = CreateObject("outlook.application") Set cnn = New ADODB.Connection cnn.Open CurrentProject.Connection Set rst_cusid = New ADODB.Recordset rst_cusid.Open "select distinct CustomerID,CompanyName,Email from v_order_list", cnn, adOpenKeyset, adLockReadOnly If rst_cusid.RecordCount < 1 Then Exit Sub Set rst_order_list = New ADODB.Recordset For i = 1 To rst_cusid.RecordCount rst_order_list.Open "select * from v_order_list where CustomerID = " + "'" + rst_cusid.Fields(0) + "'", cnn, adOpenKeyset, adLockReadOnly With rst_order_list para = "Dear " + .Fields(1) + ":" + Chr(10) para = para + Space(3) + "Your Company " + .Fields(0) + " has Order those Good:" + Chr(10) For j = 1 To .RecordCount para = para + Space(3) + "Good Name :" + .Fields(2) + " Order Date :" + CStr(.Fields(3)) + " Price:" + CStr(.Fields(4)) + Chr(10) Next End With rst_order_list.Close para = para + Space(30) + "Yours Loadhigh" 'para为信件内容 Set newmail = olkapp.CreateItem(olMailItem) With newmail .To = rst_cusid.Fields(2) '接收邮件的信箱 .Subject = rst_cusid.Fields(1) + " Order List" '信件标题 .Body = para .Send '发送 End With rst_cusid.MoveNext para = "" Next rst_cusid.Close Set rst_cusid = Nothing Set rst_order_list = Nothing cnn.Close Set cnn = Nothing End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2002-10-22 12:59 | 显示全部楼层
具体文件下载后执行模块中的Email_order_list中的宏“Send_Order_Mail”。 [upload=rar]uploadImages/2002102212591755945.rar[/upload]

TA的精华主题

TA的得分主题

发表于 2002-10-22 21:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
如何跳过Outlook的防病毒功能让程序连续发送E-Mail呀?

TA的精华主题

TA的得分主题

发表于 2003-10-8 17:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
太棒了,这道题我在网上也听说过,可是一直没找到答案,直到今天才有了,太感谢了。我得好好读读这个函数了,这方法一时半晌还搞不懂。是我愚笨 :<

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-10-9 11:15 | 显示全部楼层
其实,我现在和其他业务公司就是通过这种方式来传递信息,还是挺实用的。

TA的精华主题

TA的得分主题

发表于 2003-12-4 15:59 | 显示全部楼层
如何跳过Outlook的防病毒功能让程序连续发送E-Mail呀?

TA的精华主题

TA的得分主题

 楼主| 发表于 2003-12-4 18:06 | 显示全部楼层
outlook 2000 没有outlook 2002 的这些麻烦。

TA的精华主题

TA的得分主题

发表于 2003-12-8 11:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
每句配有简单的说明就更好了。

TA的精华主题

TA的得分主题

发表于 2003-12-8 14:41 | 显示全部楼层
以下是引用tof在2003-12-8 11:46:00的发言: 每句配有简单的说明就更好了。
编程标准之一~

TA的精华主题

TA的得分主题

发表于 2003-12-22 10:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我使用OutlookXP执行类似操作时,需要手工干预才能发出去,如何才能实现真正的自动发送?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-3-29 22:01 , Processed in 0.050984 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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