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