ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

请问如何直接从SQL里面导出数据,然后直接发送邮件呢?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-8-29 16:02 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

我的构思是:从SQL把数据导出到RS上面。然后直接发邮件出去,把RS的内容直接在邮件正文显示。

这里有同学知道怎么做吗?

单独的从SQL 导数据到EXCEL,我会。从EXCEL发附件我也会。

但是我就是不知道怎么把内容直接在邮件正文显示,我不想用附件形式。

请大虾帮我。下面是构思.

1.---从sql 导出数据到rs集合中

 Sub test_mail()
 Dim i  As Integer, j  As Integer, sht  As Worksheet
 
  Dim cn     As New ADODB.Connection
 
  Dim rs     As New ADODB.Recordset
 
  Dim strCn     As String, strSQL  As String
    
  strCn = "Provider=sqloledb;Server=westgua;Database=test;Uid=test;Pwd=test^^" 
    
  strSQL = "select * from test.dbo.bb"
 
  cn.Open strCn          
  rs.Open strSQL, cn         

???这里就是需要大虾帮我的了.如何让RS的内容给BODY

Call SendMail(Adress, Subject, Body, Attachment)


End Sub

2.---发邮件
Sub SendMail

Dim objOL As Object
Dim itmNewMail As Object
Dim olMailItem

Set objOL = CreateObject("Outlook.Application")
Set itmNewMail = objOL.CreateItem(olMailItem)


With itmNewMail
.Subject = Subject
.Body = ?? '这里希望是rs的内容
.To = 1111@163.com

End With
On Error GoTo continue
SendEmail:
itmNewMail.display
DoEvents
DoEvents
DoEvents
SendKeys "%s", Wait:=True
DoEvents
itmNewMail.display
GoTo SendEmail
continue:
On Error GoTo 0
Set objOL = Nothing
Set itmNewMail = Nothing

  rs.Close           
 
End Sub

[此贴子已经被作者于2006-8-29 16:06:43编辑过]

TA的精华主题

TA的得分主题

发表于 2006-8-29 16:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
body=rs.getstring(,,,vbnewline)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-29 16:40 | 显示全部楼层

谢谢,可以了。但是出来的是没有边框的。这个该怎么添加呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-29 16:45 | 显示全部楼层

有个问题,就是SQL里面的列的名字,能不能也一起发出来呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-29 16:47 | 显示全部楼层

或者请问gly1126

能不能这样,把RS的集合放到EXCEL表格里面,把表格的内容直接放到邮件正文呢?

TA的精华主题

TA的得分主题

发表于 2006-8-29 17:02 | 显示全部楼层

1、加列名

for each c in rs.fields

body=body & c.name & vbtab

next c

body=body & vbnewline

body=body & rs.getstring(,,,vbnewline)

2、rs放入表格里面

for i=1 to rs.fields.count-1

cells(1,i).value=rs.fields(i-1).name

next i

cells(2,1).copyfromrecordset rs

加边框代码

3、用查询

with activesheet.querytables.add("odbc;dsn=westgua;uid=test;pwd=test^^",range("a1"))

.commandtext="select * from test.dbo.bb"
.refresh

end with

加连框代码

邮件正文加边框暂没有办法,得请教版主

[此贴子已经被作者于2006-8-29 17:06:25编辑过]

TA的精华主题

TA的得分主题

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

1、加列名

for each c in rs.fields

我这里写的strSQL = "select * from test.dbo.bb"
 
  cn.Open strCn          
  rs.Open strSQL, cn         

只是把内容放到RS中,列名还是在SQL的TABLE上的,并不是在RS集合里的。所以用你的这个办法还是无法把列名发到邮件里。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-29 17:20 | 显示全部楼层

2、rs放入表格里面,这个我可以实现.

但是我希望把表格直接发到邮件的正文去,怎么做呢?

如果能直接将表格发到邮件正文中,那就不存在边框问题了。因为我在表格里面把边框颜色都设置好了。

请问这个有办法解决吗?

[此贴子已经被作者于2006-8-29 17:54:52编辑过]

TA的精华主题

TA的得分主题

发表于 2006-8-29 20:56 | 显示全部楼层

workbook 有sendmail方法,试试行不行?

[此贴子已经被作者于2006-8-29 20:56:50编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-30 08:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QUOTE:
以下是引用gly1126在2006-8-29 20:56:30的发言:

workbook 有sendmail方法,试试行不行?


好像workbook.sendmail方法,是添加附件的形式。

而我需要实现的是:把sheet里面的表格直接贴到邮件正文发送出去。而不是附件形式。

请高手帮忙看过来。谢谢。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 03:14 , Processed in 0.051536 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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