最近一直在寫VBA,因?yàn)樯婕暗降慕y(tǒng)計(jì)比較多,且資料量也比較大,所以比較喜歡用ADO+SQL的方法,但這樣就在程序中多次出現(xiàn)定義對(duì)象--連接數(shù)據(jù)庫--執(zhí)行查詢--輸出結(jié)果這個(gè)過程,所以干脆整理出來,做一個(gè)模塊,這樣以后隨時(shí)可以調(diào)用,且應(yīng)用起來比較方便,不會(huì)被一大堆的代碼搞暈。 模塊名稱為queryinfo,參數(shù)ssql為SQL語句,biaoming為結(jié)果輸出的表名稱,weizhi為輸出表位置的左上角單元格。
引用示例:
Call queryinfo("SELECT field1,field2 FROM [sheet1$]","sheet2","A2")
表示查詢表1中的第一、第二字段的數(shù)據(jù)輸出到表2,在表2中從A2單元格開始寫入數(shù)據(jù)。
模塊代碼:
Sub queryinfo(ssql As String, biaoming As String, weizhi As String)
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.Open "Provider=Microsoft.Jet.Oledb.4.0;" & _
"Extended Properties=Excel 8.0;" & _
"Data Source=" & ThisWorkbook.Path & "\" & ThisWorkbook.Name
If conn.State = adStateOpen Then
Sheets(biaoming).Range(weizhi).CopyFromRecordset conn.Execute(ssql)
conn.Close
End If
Set conn = Nothing
End Sub