最近一直在写VBA,因为涉及到的统计比较多,且资料量也比较大,所以比较喜欢用ADO+SQL的方法,但这样就在程序中多次出现定义对象--连接数据库--执行查询--输出结果这个过程,所以干脆整理出来,做一个模块,这样以后随时可以调用,且应用起来比较方便,不会被一大堆的代码搞晕。 模块名称为queryinfo,参数ssql为SQL语句,biaoming为结果输出的表名称,weizhi为输出表位置的左上角单元格。
引用示例:
Call queryinfo("SELECT field1,field2 FROM [sheet1$]","sheet2","A2")
表示查询表1中的第一、第二字段的数据输出到表2,在表2中从A2单元格开始写入数据。
模块代码:
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