实例24:使用 ADO 在 Excel 中与 SQLSERVER 进行数据传输 一、从 SQLSERVER 查询到 Excel 中 Private Sub SQLToExcel() Dim SQL$ '从系统的自动化对象表中申请ADO对象 Set CNN = CreateObject("ADODB.Connection") '使用 OLE DB Provider 连接到 SQLSERVER CNN.Open "Provider=sqloledb;Server=服务器名;Database=数据库名;Integrated Security=SSPI;User ID=sa;Password=supervisor" SQL = "SELECT * FROM 表" '将查询结果放置于以 A2 为左上角的区域中 [A2].CopyFromRecordset CNN.Execute(SQL) '断开连接,对象置空 CNN.Close: Set CNN = Nothing End Sub 二、将 Excel 中的数据添加进 SQLSERVER 中 Private Sub ExcelToSQL() '首先请添加引用:菜单“工具”-引用-Microsoft Activex Data Objects 2.x ,之后再使用下面的代码 Dim CNN As New ADODB.Connection Dim RST As New ADODB.Recordset Dim i%, j%, SQL$ CNN.Open "Provider=sqloledb;Server=服务器名;Database=数据库名;Integrated Security=SSPI;User ID=sa;Password=supervisor" SQL = "SELECT * FROM 表" RST.Open SQL, CNN, , adLockOptimistic '将要传入SQLSERVER的数据区域存入数组 ARR = [A2:D10] '遍历行 For i = 1 To UBound(ARR) RST.AddNew '遍历列 For j = 1 To 4 RST.Fields(j - 1).Value = ARR(i, j) Next RST.Update Next CNN.Close End Sub 其中红色部分为可变化部分。 相关: 1. 论坛以前已有的很详细的解说: http://club.excelhome.net/dispbbs.asp?boardid=2&replyid=608952&id=38047&page=1&skin=0&Star=1 2. 另一种连接字符串写法: Cnn.Open "Driver={SQL Server};Server=服务器名;DataBase=数据库名;User ID=sa;Password=supervisor;AutoTranslate=False;"
在控制面板-管理工具-数据源(ODBC) 里面添加“系统DSN”-SQLSERVER 3. 提示“行集不支持反向提取”的解决办法: http://club.excelhome.net/dispbbs.asp?boardid=2&replyid=422209&id=171989&page=1&skin=0&Star=1
[此贴子已经被作者于2007-2-26 17:24:51编辑过] |