VBA调用SQL进行数据处理

论坛 期权论坛 期权     
Romi的杂货铺   2019-6-29 21:11   669   0
  1. Sub Test4()
复制代码
  1.     Dim Conn As Object, Rst As Object
复制代码
  1.     Dim strConn As String, strSQL As String
复制代码
  1.     Dim i As Integer, PathStr As String
复制代码
  1.     Set Conn = CreateObject("ADODB.Connection")
复制代码
  1.     Set Rst = CreateObject("ADODB.Recordset")
复制代码
  1.     PathStr = ThisWorkbook.FullName   '设置工作簿的完整路径和名称
复制代码
  1.     Select Case Application.Version * 1    '设置连接字符串,根据版本创建连接
复制代码
  1.     Case Is = 12
复制代码
  1.         strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathStr & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
复制代码
  1.     End Select
复制代码
  1.     '***************在这一句写入SQL语句
复制代码
  1.     Conn.Open strConn    '打开数据库链接
复制代码
  1.     strSQL = "select * from [sheet1$]"  
复制代码
  1.     Set Rst = Conn.Execute(strSQL)    '执行查询,并将结果输出到记录集对象
复制代码
  1.     With Sheet3
复制代码
  1.         .Cells.Clear
复制代码
  1.         For i = 0 To Rst.Fields.Count - 1    '填写标题
复制代码
  1.          '***************在这一句更改标题需要写入的位置
复制代码
  1.             .Cells(1, i + 1) = Rst.Fields(i).Name
复制代码
  1.         Next i
复制代码
  1.         '***************在这一句更改数据需要写入的位置
复制代码
  1.         .Range("A2").CopyFromRecordset Rst
复制代码
  1.         .Cells.EntireColumn.AutoFit  '自动调整列宽
复制代码
  1.         .Cells.EntireColumn.AutoFit  '自动调整列宽
复制代码
  1.     End With
复制代码
  1.     Rst.Close    '关闭数据库连接
复制代码
  1.     Conn.Close
复制代码
  1.     Set Conn = Nothing
复制代码
  1.     Set Rst = Nothing
复制代码
  1. End Sub
复制代码
[code][/code]实际使用中需要更改的地方只有三处,分别为SQL语句,标题输出位置,数据输出位置,已用****************标出,十分适合大批量数据的处理。

需要注意的是这里的SQL语句没有case  when语句,只能使用IIF代替。

原文章:
http://club.excelhome.net/thread-1061487-1-1.html
从零开始学习SQL
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP