Excel VBA 连接SQL数据库后的 *** 作。

Excel VBA 连接SQL数据库后的 *** 作。,第1张

呵呵,以前就帮人家解决过这个,请看下面的代码,有注释的!

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数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9649118.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存