【无标题】

如何通过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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值