首先说明以下。
第一: 下面的 “ _" 也就是 空格下划线 在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