Excel VBA宏 链接服务器 上传和下载数据

时间:2023-01-17 17:51:17
  首先说明以下。
       第一: 下面的 “ _" 也就是 空格下划线 在VBA中表示换行的意思;& 表示链接连个字符串的操作,注意 & 的前后是否需要空格
      第二: 如果链接服务器,服务器名称,账号,密码,或者SQL语句有问题,都会报错说自动化错误。
       第三: 如果刚开始运行程序就显示”未定义对象错误“,那么你就需要 VBA界面的”工程--引用“中选择”Micsoft ActiveX data Objects 2.6“ 点击确定。  
 
 1 Sub 下载数据()
2
3 Dim lastRow As Long, lastColumn As Long
4 lastRow = ActiveSheet.UsedRange.Rows.Count
5 lastColumn = ActiveSheet.UsedRange.Columns.Count
6
7 'MsgBox Split(Range("A1")(1, lastColumn).Address, "$")(1)
8
9 If lastRow > 2 Then
10 Range("a3:BL999") = "" '仅仅清空内容
11 Range("bo3:bo999") = "" 'Range("A2:I65536").ClearContents 也可以清楚内容
12 ' ActiveSheet.Rows("3:" & lastRow).Delete 清楚了内容包括格式
13 End If
14 'MsgBox (Cells(10, 1).Value)
15 Dim conn As Object
16 '定义变量
17 Set conn = CreateObject("ADODB.Connection") '建立ADODB连接对象
18 conn.ConnectionString = "Driver={sql server};" _
19 & "server=你的服务器;" _
20 & "uid=;pwd=;" _
21 & "database=你的数据库;" _
22 & "AutoTranslate=False"
23 conn.Open '打开了和SQL的链接
24 mySql = " SELECT * FROM [dbo].[LEAD] ORDER BY [月],[周]" '写自己的SQL查询语句
25 Set rsData = New ADODB.Recordset '定义一个可以保存sql查询的对象集
26 Set rsData = conn.Execute(mySql) 'rsData.Open mySql, conn 可以实现相同的功能
27 'Worksheets("Sheet1").Range("A3").CopyFromRecordset rsData --一次性写入从A3开始的sheet1 工作中
28 Range("A3").CopyFromRecordset rsData '写出到当前激活的sheet中从A3开始
29 rsData.Close '养成好习惯,用完的东西要关闭哦~~~
30 Set rsData = Nothing
31 conn.Close
32 Set conn = Nothing
33 End Sub
 1 Sub 上传数据()
2 'MsgBox (Cells(10, 1).Value)
3 Dim conn As Object
4 Set conn = CreateObject("ADODB.Connection") '建立ADODB连接对象
5
6 conn.ConnectionString = "Driver={sql server};" _
7 & "server=你的服务器;" _
8 & "uid=;pwd=;" _
9 & "database=你的数据库;" _
10 & "AutoTranslate=False"
11 Dim Sql1 As String, Sql2 As String
12 conn.Open '打开了和SQL的链接
13 For i = 2 To 30
14 Sql = "INSERT INTO 表([V1],[V2]) VALUES ('" & Cells(i, 1).Value & "','" & Cells(i, 2).Value & "')"
15 '输出一条语句至文件
16 conn.Execute (Sql) '执行Sql 语句
17 Next
18
19 '养成好习惯,用完的东西要关闭哦~~~
20 conn.Close
21 Set conn = Nothing
22 End Sub