通过Excel VBA连接本机的SQL2000Mini服务器并提取数据,具体代码如下:
Public Sub click()
Dim cnn As New ADODB.Connection
Dim sql As String
Set cnn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
strCn = "Provider=SQLOLEDB;server=127.0.0.1\SQL2000Mini,6900;Database=Uc3;Uid=sa;Pwd=Power"
sql = "select * from dbo.Hion_v_KHZL"
cnn.Open strCn
'读取数据库中的数据
rst.Open sql, cnn
'i,j为整数变量;sht 为excel工作表对象变量,指向某一工作表
Dim i As Integer
Dim j As Integer
Dim sht As Worksheet
i = 1
Set sht = ThisWorkbook.Worksheets("sheet2")
'循环读取数据并将数据显示到excel中
For j = 0 To rst.Fields.Count - 1
sht.Cells(1, j + 1).Value = rst.Fields(j).Name
Next j
Range("A2").CopyFromRecordset rst
'Do While Not rs.EOF '当数据指针未移到记录集末尾时,循环下列操作
' sht.Cells(i, 1) = rs("A") '把当前记录的字段1的值保存到sheet1工作表的第i行第1列
' sht.Cells(i, 2) = rs("B") '把当前字段2的值保存到sheet1工作表的第i行第2列
' sht.Cells(i, 3) = rs("C") '把当前字段2的值保存到sheet1工作表的第i行第2列
' sht.Cells(i, 4) = rs("D") '把当前字段2的值保存到sheet1工作表的第i行第2列
' rs.MoveNext '把指针移向下一条记录
' i = i + 1 'i加1,准备把下一记录相关字段的值保存到工作表的下一行
'Loop '循环
rst.Close '关闭记录集,至此,程序将把某数据表的字段1和字段2保存在excel工作表sheet1的第1、2列,行数等于数据表的记录数
End Sub