如何通过VBA将excel 数据上传至SQL数据库中?
光年
光年
记录学习过程
2 人赞同了该文章
首先给出案例代码
Private Sub 上传_Click()
Dim i, j, k, r, b As Long
Dim nm(1 To 10)
Dim dd
Dim str
Dim cnn As Object, sql
,
M
y
p
a
t
h
, Mypath
,Mypath, MyFile$, n%
Set cnn = CreateObject(“adodb.connection”)
Set rs = CreateObject(“ADODB.RecordSet”)
cnn.Open " provider=SQLOLEDB;Data Source=192.168.11.11;Initial Catalog=HuolalaXSsss;User ID=aa;Password=sasasa;"
sql = “delete from [30day_relust]”
cnn.Execute sql
Columns(“A:O”).Select
Selection.Replace What:=“null”, Replacement:=""
r = Range(“A1000000”).End(xlUp).Row
If r = 1 Then
MsgBox “请粘贴数据后导入”
Exit Sub
End If
For i = 2 To r
Cells(1, 20) = i
str = ""
For j = 1 To 15
If str = "" Then
str = "'" & Cells(i, j) & "'"
Else
str = str & "," & "'" & Cells(i, j) & "'"
End If
Next j
sql = "insert into [30day_relust_upload](stuff,cus_type,ep_id,ep_status,user_id,follow_date,首次配对时间,总配对订单,新客30天gmv,转化月份,转化日期,是否30天内转化,一级渠道,二级渠道,跟进状态) select " & str
cnn.Execute sql
Next i
sql = "insert into 30day_relust " & _
"select stuff,cus_type,ep_id,ep_status,user_id,follow_date,首次配对时间,总配对订单,新客30天gmv,转化月份,转化日期,是否30天内转化,一级渠道,二级渠道,跟进状态 " & _
“from [30day_relust_upload]”
cnn.Execute sql
sql = “delete from [30day_relust_upload]”
cnn.Execute sql
cnn.Close
Set cnn = Nothing
MsgBox “导入成功”
End Sub
(第一步定义变量)
Dim i, j, k, r, b As Long
Dim nm(1 To 10)
Dim dd
Dim str
Dim cnn As Object, sql
,
M
y
p
a
t
h
, Mypath
,Mypath, MyFile$, n%
Set cnn = CreateObject(“adodb.connection”)
Set rs = CreateObject(“ADODB.RecordSet”)
Long 表示长整型数据类型
nm(1 TO 10) 表示:声明一个数组nm,有10个元素,元素下标从1到10
Dim cnn As object ,sql , M y p a t h ,Mypath ,Mypath,MyFile$,n%:定义cnn表里为object对象型数据结构;
1.object 对应 cnn.Open 中的provider = SQLOLEDB; 表示采用数据库的方式连接
2.sql$ 对应 cnn.Open 中的 Data Source = 192.168.10.33;表示需要连接数据库服务器的ip地址,输入ip地址
3.Mypath$对应cnn.Open中的Initial Catalog = HuolalaDXTtl;表示选择数据库中的对应库名
4.MyFile$对应cnn.Open中的User ID = sa;表示选择数据库的用户名
5.n%对应cnn.Open中的n%中的Password = sasasa;表示选择数据库的密码
(第二步删除原始数据)
sql = “delete from [30day_relust]”
cnn.Execute sql
cnn.Execute sql表示执行sql代码
(第三步excel数据一致化处理)
Columns(“A:O”).Select
Selection.Replace What:=“null”, Replacement:=""
选择A列到O列的数据进行查询,
将单元格为“null”的替换为“”
(第四步在“A1000000”中找出最后一行有数据的行,将最后这一行的的行数赋值给r)
r = Range(“A1000000”).End(xlUp).Row
(第五步检查用户是否在除了第一列(字段)后的列输入数据明细)
If r = 1 Then
MsgBox “请粘贴数据后导入”
Exit Sub
End If
如果没有输入数据,则提示用户“请粘贴数据后导入”
(第六步通过for循环一行一行的将数据插入[30day_relust_upload]表)
For i = 2 To r
Cells(1, 20) = i
str = ""
For j = 1 To 15
If str = "" Then
str = "'" & Cells(i, j) & "'"
Else
str = str & "," & "'" & Cells(i, j) & "'"
End If
Next j
sql = "insert into [30day_relust_upload](stuff,cus_type,ep_id,ep_status,user_id,follow_date,首次配对时间,总配对订单,新客30天gmv,转化月份,转化日期,是否30天内转化,一级渠道,二级渠道,跟进状态) select " & str
cnn.Execute sql
Next i
(第七步将数据从[30day_relust_upload]表复制到[30day_relust]表)
& _表示换行
sql = "insert into 30day_relust " & _
"select stuff,cus_type,ep_id,ep_status,user_id,follow_date,首次配对时间,总配对订单,新客30天gmv,转化月份,转化日期,是否30天内转化,一级渠道,二级渠道,跟进状态 " & _
“from [30day_relust_upload]”
cnn.Execute sql
(第八步将[30day_relust_upload]表的数据进行删除处理)
sql = “delete from [30day_relust_upload]”
cnn.Execute sql
(第九步关闭数据库连接)
cnn.Close
Set cnn = Nothing
(第十步提示用户导入成功)
MsgBox “导入成功”
发布于 2021-08-25 15:39