作者:一种姿态获得无可取代 | 来源:互联网 | 2023-08-23 14:36
我有一个EXCEL表格,结果如下:
EXCEL表一
月份 金额
一月
二月
三月
四月
有以下一个sql server数据表
create table tb(月份 varchar(10) ,金额 int)
insert into tb(月份 , 金额) values('一月' , 138)
insert into tb(月份 , 金额) values('二月' , 220)
insert into tb(月份 , 金额) values('三月' , 330)
insert into tb(月份 , 金额) values('四月' , 320)
go
select * from tb
月份 金额
一月 138
二月 220
三月 330
四月 320
我想用EXCEL中的VBA连接sql,查询tb表,并将查询得到的结果放入到EXCEL表格中相应的单元格中,并且
EXCEL单元格中的数据可以随着sql数据库中的数据更新而更新,目前我已成功连接数据库,但不知道应该如何把查询到的结果
放入到EXCEL相对应的单元格中,请教高手帮我解决这个问题!在此先行谢过了!
以下是用EXCEL连接SQL数据库的代码:
Dim objcon As New ADODB.Connection
Dim objrs As New ADODB.Recordset
Dim pzh As ADODB.Recordset
Dim excel As ADODB.Recordset
Dim MyXL As Object
Dim strConn As String
strConn = "Provider=SQLOLEDB.1;User ID=sa;password=mfkwvfay;Initial Catalog=txcard;Data Source=192.168.1.158"
objcon.Open strConn
Set pzh = New ADODB.Recordset
pzh.CursorType = adOpenStatic
pzh.Open "select * from tB ", strConn, adCmdText
MsgBox "测试数据库连接:" & pzh.Fields(1) & "元", vbInformation, "提示"
?????????麻烦这方面的高手帮我写出,这里如何把查询到的结果放到EXCEL相对应的单元格中!!
pzh.Close
运行宏即可得到以下数据
月份 金额
一月 138
二月 220
三月 330
四月 320
金额可以动态地得到SQL SERVER数据表中的金额!!希望能以此为例给出关键地方的代码!
7 个解决方案
接在你的 pzh.Open 语句往下写:
While Not pzh.EOF
For i = 0 To pzh.Fields.Count - 1
Sheet1.Cells(2, i + 1) = pzh.Fields(1).Value
Next
pzh.MoveNext
Wend
MsgBox ("OK")
试试看,看是不是你想要的。
并将查询得到的结果放入到EXCEL表格中相应的单元格中
--
这个估计难.一般重新做个execl.
1楼的老师,数据现在是能够放到单元格中去了,但是对不上号,是乱的,我想SQL的条件应该会和EXCEL月份条件进行比较,然后把相对应的数据放到单元格中!!但我不知道代码应该如何写!!麻烦你们再帮我想想办法!
按照一楼的方法,单元格中的数据只能出现最后一条记录的数据
我用以下程序,TB表里面有三条记录,为什么结果将最后一行的金额找出来了,三行,但都显示的是最后一条记录的金额,帮我看看是什么原因!
Dim objcon As New ADODB.Connection
Dim objrs As New ADODB.Recordset
Dim pzh As ADODB.Recordset
Dim excel As ADODB.Recordset
Dim MyXL As Object
Dim strConn As String
strConn = "Provider=SQLOLEDB.1;User ID=sa;password=mfkwvfay;Initial Catalog=test;Data Source=192.168.0.168"
objcon.Open strConn
Set pzh = New ADODB.Recordset
pzh.CursorType = adOpenStatic
pzh.Open "select * from tb", strConn, adCmdText
While Not pzh.EOF
For i = 1 To pzh.Fields.Count + 1
Sheet1.Cells(i + 1, 2) = pzh.Fields(1).Value
Next
pzh.MoveNext
Wend
'MsgBox "测试数据库连接:" & pzh.Fields(金额) & "元", vbInformation, "提示"
pzh.Close
TB表里面有三条记录,为什么结果将最后一行的金额找出来了,三行,但都显示的是最后一条记录的金额,帮我看看是什么原因!
如果查询结果是没记录呢,会不会出现什么提示呢,要怎么判断?