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