使用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
我要做的是创建一个新的动态生成的表格,其中显示了所有人员。
在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
要在您自己的工作簿上
Data Source
使用此文件,您需要将路径更改为您使用的文件名。[Sheet1$]
查询中的是您要从中选择的工作表的名称(保留在中$
)。Worksheets(2)
是要在其中创建动态表的工作表的编号。此外,您需要
Microsoft Active X Data Objects
通过Tools>References
在excel中的VBA编辑器中启用其中一个库。