Excel通过VBA脚本将SQL数据显示到Excel

文章描述了如何使用VBA脚本在Excel2007中从SQL2008数据库动态导出数据,包括根据查询条件选择日期范围,自动添加表头并更新数据。脚本涉及连接数据库、执行SQL查询、处理记录集和清除指定行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件:Excel2007、SQL2008

功能需求:

        SQL数据库中有5个Table,通过Excel将不同Table中的数据(含表头),导出到Excel中;

脚本包含:

  1. 链接SQL数据库脚本;
  2. 数据导出后,固定Excel第几行插入;
  3. 需要将SQL表头同时导出到Excel中;
  4. 每次表头内容都不一样,需要根据每次查询条件进行刷新;
  5. 每次查询后,需要从第几行进行数据清除。

Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim ss As String
Dim StartData As String
Dim EndData As String
Dim ER As String
Dim DD As String
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
Range("3:" & Rows.Count).Clear
ER = Sheet1.ComboBox1.Text
If ER = "C802_1" Then
    DD = "date1"
ElseIf ER = "C802_2" Then
    DD = "date2"
ElseIf ER = "C802_3" Then
    DD = "date3"
ElseIf ER = "C802_4" Then
    DD = "date4"
ElseIf ER = "C802_5" Then
    DD = "date5"
Else
    DD = "date1"
End If

Startyear = Mid(Range("Datatime1").Value, 1, 4)
Startmon = Mid(Range("Datatime1").Value, 6, 2)
Startday = Mid(Range("Datatime1").Value, 9, 2)
StartData = Startyear + "/" + Startmon + "/" + Startday
Endyear = Mid(Range("Datatime2").Value, 1, 4)
Endmon = Mid(Range("Datatime2").Value, 6, 2)
Endday = Mid(Range("Datatime2").Value, 9, 2)
EndData = Endyear + "/" + Endmon + "/" + Endday

conn.ConnectionString = "Provider=sqloledb;Server=127.0.0.1;Database=DataCollcetion;Integrated Security=SSPI;Persist Security Info=False;"
conn.Open
sqlcn = "select * from " + ER + " where " + DD + " BETWEEN  '" + StartData + "' AND  '" + EndData + "' order by " + DD + " desc"

rs.Open sqlcn, conn
'Range("3:" & Rows.Count).Clear   '从三行开始删除
For i = 0 To rs.Fields.Count - 1   '增加表头
    Sheet1.Cells(3, i + 1) = rs.Fields(i).Name
Next i
Range("A4").CopyFromRecordset rs

rs.Close: Set rs = Nothing
conn.Close: Set conn = Nothing

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值