
呵呵,以前就帮人家解决过这个,请看下面的代码,有注释的!
Private Sub CommandButton5_Click()
Dim Conn As New ADODBConnection '定义ADODB连接对象
Dim ConnStr As String '定义连接字符串
Dim xiao As String
xiao = ComDataText
'对于SQL 2008,如果以IP方式访问服务器,必须要启动SQL Server Browser服务,如果是Express版本,要以“IP(计算机名)\实例名”方式访问
ConnStr = txtDataText
Dim Records As New ADODBRecordset '定义ADODB对象的记录集
Dim Sheet As Worksheet '定义工作表
Set Sheet = ThisWorkbookWorksheets("Sheet2") '给变量Sheet赋值,注意:是工作簿中索引为1的那个表(通常一个新的工作簿Sheet1的索引为1)
'SheetName = "Data" '把Sheet名称改为Data
SheetCellsClear '清空表中原有的数据
'连接状态是打开就不在进行Open *** 作
ConnOpen ConnStr
Dim SQLStr As String '要执行的SQL语句
SQLStr = "select from Shift_Code where Club='" + xiao + "'" '可以执行更复杂的SQL语句
RecordsOpen SQLStr, Conn, adOpenStatic, adLockBatchOptimistic '读取SQL查询结果到Records记录集
'RecordsOpen
Dim i, j, TotalRows, TotalColumns As Integer
j = 0
TotalRows = RecordsRecordCount
TotalColumns = RecordsFieldsCount
'下面的循环把表头(即列名)写到Excel表的第一行
For i = 0 To TotalColumns - 1
Sheet2Cells(1, i + 1) = RecordsFields(i)Name
Next
'下面的循环把查询结果写到Excel表中
Do While Not RecordsEOF
For i = 0 To TotalColumns - 1
Sheet2Cells(j + 2, i + 1) = RecordsFields(i)Value
Next
RecordsMoveNext
j = j + 1
Loop
RecordsClose '关闭记录集
ConnClose '关闭连接
Set Records = Nothing '清空对象
Set Conn = Nothing '清空对象
End Sub
有什么不懂的话Hi我!
67表示主机地址错误,你下面语句中的服务器名要修改服务器的机器名、域名或者IP地址。
constr = "provider=sqlncli101;persist security info=false;initial catalog=yearsallshow;user id=sa;pwd=psw;data source=服务器名"
所有错误代码的含义见连接网页:网页链接
在EXCEL 的 代码编辑窗口,使用菜单 工具-引用,勾选
Microsoft ActiveX Data Object 26 Library 或其他版本
这样引用了VB的ADODB对象模型,其他使用办法与VB环境完全一样。
VBE 工具 引用,选中 Microsoft ActiveX Data Object 28 Library
我不清楚是不是UFDATA_013_2008表的VENDOR列的数据,如果不是,你自己改一下SQL语句吧,sql = "select VENDOR from UFDATA_013_2008"
Sub SQL数据导入()
Dim cn As New ADODBConnection
Dim rs As ADODBRecordset
Dim str As String
Dim sql As String
Dim i As Integer
str = "Provider=SQLOLEDB;Data Source=SQLSERVER服务器名或IP;DATABASE=数据库;UID=用户名;PWD=密码"
cnOpen str
Set rs = New ADODBRecordset
sql = "select VENDOR from UFDATA_013_2008"
rsOpen sql, cn, adOpenStatic, adLockOptimistic
If Not rsEOF Then
For i = 1 To rsRecordCount
Sheet2Cells(i, 1)Value = rsFields(0)Value
Next i
rsMoveNext
End If
rsClose
cnClose
End Sub
读取和写入 *** 作方式一样,唯一不同的是sql语句,读取用select,读取用insert,以读取为例子,录入如下代码:
'sql完整例子
Sub testSql()
'定义连接对象
Dim cnn As New ADODBConnection
Dim rs As New ADODBRecordset
'定义连接字符串
Dim conStr As String
Dim sqlstr As String
'连接字符串-以下是连接MSSQL数据库
conStr = "Provider=sqloledb; " _
& "Server=1921681121; " _
& "Database=DATABASENAME;Uid=admin;Pwd=admin;"
cnnOpen conStr
sqlstr = "SELECT from tablename"
rsOpen sqlstr, cnn
Range("a2")CopyFromRecordset rs
rsClose
cnnClose
End Sub
以上就是关于Excel VBA 连接SQL数据库后的 *** 作。全部的内容,包括:Excel VBA 连接SQL数据库后的 *** 作。、VBA通过ADO连接SQL数据库,但是提示“无法链接到SQL数据库 错误编码 [67]”,问题在哪里呢、求助,EXCEL通过VBA *** 作SQL数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)