3

次のような大きな 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 では、これは synch: になります"SELECT * FROM table WHERE type='men'"。これまで Excel で VBA を使用したことがないので (私は経験豊富な PHP/Javascript プログラマーであり、MS Access で VBA を使用したことがあります)、初心者向けの手順を探しています。おそらく誰かが、私がしなければならないことのようなことをする簡単なチュートリアルやブログ投稿を勧めてくれるでしょうか?

4

1 に答える 1

6

一日のほとんどを費やしましたが、私はこれを理解しました。コードは次のとおりです。

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)動的テーブルを作成しているシートの番号です。

さらに、 Excel の VBA エディターでMicrosoft Active X Data Objectsライブラリの 1 つを有効にする必要があります。Tools>References

于 2012-11-29T15:08:41.973 に答える