作者paul60209 (我是保罗小小)
标题Re: [VBA ] 查询SQL资料
时间Tue Apr 24 18:27:39 2018
※ 引述《Cochran ()》之铭言:
: 各位好,小弟新手...
: 小弟写好SQL程式,也可以正确无误地跑出查询结果,
: 因为要供其他同事做即时的查询,但同事又不会用SQL...
: 故想请问...
: 如何利用 VBA 跑已经写好的SQL程式,并将查询结果显示在EXCEL上?
请先去window视窗搜寻「ODBC资料来源」,新增SQL Server的资讯,
在回到Excel的VBA视窗→工具→设定引用项目,
将 Microsoft ActiveX Data Objects 2.7 Library引用进来
然後复制下列语法,依据个人需求更改SQL Server IP, ID, PWD, DB NAME
以及SQL语法,设定导出的活页簿名称以及columns的名称,储存为.xlsm的档案
以後你同事需要时,只要呼叫这个sub就能自动从SQL Server下载资料了~~
Sub AutoCaculate()
Dim Data As Range
Dim LR, myYear, myMon, myDay As Integer
Dim myPath, YS, MS, DS As String
Dim Tdate As Date
Dim i As Integer, j As Integer, sht As Worksheet 'i,j为整数变数;sht 为excel工
作表物件变数,指向某一工作表
Dim rs As New ADODB.Recordset '定义记录物件
Dim strCn As String, strSQL As String '字符串变量
Dim sStartDate As String, sEndDate As String '字符串变量
Dim MOQ As Variant
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set cn = New ADODB.Connection '定义资料连结物件 ,保存连接资料库资讯;请先
引用ADO
strCn = ("driver={SQL Server};server=IP;uid=ID;pwd=PWD;database=DB
Name;") '定义资料库连结字串
strSQL = "Select From" '此处放入SQL语言
cn.Open strCn '与资料库建立连接,如果成功,返回连线物件cn
rs.Open strSQL, cn '执行strSQL所含的SQL命令,结果保存在rs记录集物件中
i = 2
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "SHEET NAME" 'SQL资料输出位置
Set sht = ThisWorkbook.Sheets("SHEET NAME") '把sht指向当前工作簿的sheet1
工作表
sht.Cells(1, 1) = "TITTLE" '定义表头名称,可以依照需求复制此行
Do While Not rs.EOF
sht.Cells(i, 1) = rs("SQL DATA") '此处放入SQL导出资料行,可以依照需求复制此
行
rs.MoveNext
i = i + 1
Loop
rs.Close
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.135.50.86
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Visual_Basic/M.1524565662.A.92A.html
1F:推 Cochran: 谢谢p大 04/24 19:09