使用VBA在Excel中使用SQL风格的查询
我有一个大的Excel表单,看起来类似于这个:
date | name | age | type 10/10/2012 | James | 12 | man 11/10/2012 | Jane | 50 | woman 12/10/2012 | Freddy | 2 | dog 13/10/2012 | Bob | 23 | man 14/10/2012 | Mary | 34 | woman
我想要做的是创build一个新的,dynamic生成的表格显示所有的人。
在SQL中,这将是一个同步: "SELECT * FROM table WHERE type='men'"
。 我以前从来没有在Excel中使用过VBA(我是一名经验丰富的PHP / Javascript程序员,并且在MS Access中使用了VBA),所以我正在寻找初学者的指导让我开始。 也许有人可以推荐一个简单的教程或博客文章,做我需要做的事情?
我花了大部分时间,但我已经明白了这一点。 代码如下:
Sub Excel_QueryTable() Sheet2.Cells.ClearContents Dim oCn As ADODB.Connection Dim oRS As ADODB.Recordset Dim ConnString As String Dim SQL As String Dim qt As QueryTable ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\t.xlsm;Extended Properties=Excel 8.0;Persist Security Info=False" Set oCn = New ADODB.Connection oCn.ConnectionString = ConnString oCn.Open SQL = "Select * from [Sheet1$] WHERE type='man'" Set oRS = New ADODB.Recordset oRS.Source = SQL oRS.ActiveConnection = oCn oRS.Open Set qt = Worksheets(2).QueryTables.Add(Connection:=oRS, _ Destination:=Range("A1")) qt.Refresh If oRS.State <> adStateClosed Then oRS.Close End If If Not oRS Is Nothing Then Set oRS = Nothing If Not oCn Is Nothing Then Set oCn = Nothing End Sub
要在自己的工作簿上实现这个function,您需要将Data Source
path更改为您正在使用的文件的名称。
查询中的[Sheet1$]
是您正在select的工作表的名称(在$
留下)。
Worksheets(2)
是您创builddynamic表格的工作表编号。
此外,您需要通过转到Excel中的VBA编辑器中的Tools>References
来启用Microsoft Active X Data Objects
库之一。