WPS表格使用VBA往SQLServer中写入数据
此代码在WPS表格中运行正常,office Excel中没有测试过,用的都是WPS所以…
需要提前安装WPS VBA插件否则无法运行。
A1处如果去掉注释则每次都会清空数据表再写入
否则就是每次执行都会继续向数据表中插入数据
Public Const IP As String = "127.0.0.1" '数据库服务器名称
Public Const DB As String = "A" '数据库名称
Public Const USR As String = "sa" '数据库连接用户名
Public Const PSW As String = "password" '数据库登录密码
Sub xieruSQL() '宏名称
Dim sht As Worksheet '定义变量为查看显示表,以方便以后改写代码
Set sht = Sheet1 '查看表
Application.EnableEvents = False '防止事件过度循环,让事件失效
On Error Resume Next
Dim arr, i&, j%
Set conn = CreateObject("Adodb.Connection")
Set dataset = CreateObject("Adodb.Recordset")
Dim strCn$, strSQL$
With sht
strCn = "Provider=sqloledb;Server=" & IP & ";Database=" & DB & ";Uid=" & USR & ";Pwd=" & PSW & ";"
conn.Open strCn '与数据库建立连接,成功返回连接对象conn
' strSQL = " delete from A2023 " 'A1清除数据表A2023中的所有数据 如需要则去掉注释
conn.Execute (strSQL)
arr = .Range("A3" & ":R" & .Range("a1048576").End(3).Row) 'A2从A列第三行到R列存在数据的最后一行
For i = 1 To UBound(arr)
kkk = ""
For j = 1 To UBound(arr, 2) - 1
kkk = kkk & "'" & arr(i, j) & "',"
Next
kkk = kkk + "'" & arr(i, j) & "'"
' sht.Range("Z1") = kkk
strSQL = " insert into A2023 values(" & kkk & ") " '将A2区域的数据插入到A2023数据表内
conn.Execute (strSQL)
Next
conn.Close: Set conn = Nothing '关闭数据库连接
End With
Application.EnableEvents = True '禁止循环
End Sub