乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 谁能给我一个EXCEL VBA往SQL数据库读取和写入记录的...-vba连接excel数据库,vba连接excel数据

谁能给我一个EXCEL VBA往SQL数据库读取和写入记录的...-vba连接excel数据库,vba连接excel数据

作者:乔山办公网日期:

返回目录:excel表格制作


呵呵,以前就帮人家解决过这个,请看下面的代码,有注释的!
Private Sub CommandButton5_Click()
Dim Conn As New ADODB.Connection '定义ADODB连接对象
Dim ConnStr As String '定义连接字符串
Dim xiao As String

xiao = ComData.Text

'对于SQL 2008,如果以IP方式访问服务7a64e59b9ee7ad94330器,必须要启动SQL Server Browser服务,如果是Express版本,要以“IP(计算机名)\实例名”方式访问
ConnStr = txtData.Text

Dim Records As New ADODB.Recordset '定义ADODB对象的记录集
Dim Sheet As Worksheet '定义工作表

Set Sheet = ThisWorkbook.Worksheets("Sheet2") '给变量Sheet赋值,注意:是工作簿中索引为1的那个表(通常一个新的工作簿Sheet1的索引为1)
'Sheet.Name = "Data" '把Sheet名称改为Data
Sheet.Cells.Clear '清空表中原有的数据

'连接状态是打开就不在进行Open操作

Conn.Open ConnStr
Dim SQLStr As String '要执行的SQL语句
SQLStr = "select * from Shift_Code where Club='" + xiao + "'" '可以执行更复杂的SQL语句

Records.Open SQLStr, Conn, adOpenStatic, adLockBatchOptimistic '读取SQL查询结果到Records记录集
'Records.Open
Dim i, j, TotalRows, TotalColumns As Integer
j = 0
TotalRows = Records.RecordCount
TotalColumns = Records.Fields.Count

'下面的循环把表头(即列名)写到Excel表的第一行
For i = 0 To TotalColumns - 1
Sheet2.Cells(1, i + 1) = Records.Fields(i).Name
Next

'下面的循环把查询结果写到Excel表中
Do While Not Records.EOF

For i = 0 To TotalColumns - 1
Sheet2.Cells(j + 2, i + 1) = Records.Fields(i).Value
Next

Records.MoveNext
j = j + 1

Loop
Records.Close '关闭记录集
Conn.Close '关闭连接

Set Records = Nothing '清空对象
Set Conn = Nothing '清空对象

End Sub

有什么不懂的话Hi我!

  • 读取和写入操作方式一样,唯一不同e799bee5baa6e79fa5e98193e58685e5aeb9334的是sql语句,读取用select,读取用insert,以读取为例子,录入如下代码:

    'sql完整例子
    Sub testSql()

        '定义连接对象
        Dim cnn As New ADODB.Connection
        Dim rs As New ADODB.Recordset
       
        '定义连接字符串
        Dim conStr As String
        Dim sqlstr As String
        '连接字符串-以下是连接MSSQL数据库
        conStr = "Provider=sqloledb; " _
        & "Server=192.168.1.121; " _
        & "Database=DATABASENAME;Uid=admin;Pwd=admin;"
        cnn.Open conStr
       
        sqlstr = "SELECT * from tablename"
        rs.Open sqlstr, cnn
        Range("a2").CopyFromRecordset rs
        rs.Close
        cnn.Close

  End Sub


1、问题本身就是个问题,什么叫读取Excel所有数据?
2、用数组来读取Excel数据是最科学的。
dim a()
a()=Range("A1:D25")
3、读取数据之后到底要对数据进行什么处理呢?

百度经验有详细的图文文章(网页链接)介绍编程语句,注意一点,不同的数据库连接代码是不同的。

另外,例子代码是把表中的数据全部读到一个表里面,你可以然后在VLOOKUP填写表的BC列。

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网