2012年2月24日金曜日

[EXCELVBA]ADOを使ったデータの処理方法

ADOでデータを読んだ後のレコードセット。
.NETみたいにDataTableとして扱ったり、並び替えたりとか色々したいんだけど
さすがにそうもいかなく、結局ぶん回すことがほとんど。

↓基本の型。
'---------------------------------------
  Dim objADOCON As ADODB.Connection
  Dim objADORS  As  ADODB.Recordset

  Set objADOCON = Application.CurrentProject.Connection
 
Set objADORS = objADOCON.Execute("SELECT * FROM アドレス帳")


  If  objADORS.EOF = True Then
        MsgBox "指定のデータはありませんでした。"
        Exit Sub
  End If

 Do Until objADORS.EOF
         Debug.Print objADORS!氏名
         objADORS.MoveNext
 Loop
  objADORS.Close
  objADOCON.Close

  Set objADORS = Nothing
  Set objADOCON = Nothing
'---------------------------------------


で、
Set objADORS = objADOCON.Execute("SELECT * FROM アドレス帳")
でとってきたレコードセットはぶん回すこと以外
ADOでは何ができるのだろうかと調べてみた。


↓①フィルターがかけられます。
'---------------------------------------
objADORS.Filter = "都道府県 = '広島'"

'解除の際は空欄でOKみたい。
objADORS.Filter = ""

'---------------------------------------



↓②Excel上のセルに一気に表示します。(これ便利!!!
'---------------------------------------

Range("A1").CopyFromRecordset objADORS

'---------------------------------------


↓③GetRowsを使って配列に格納することができます。
'---------------------------------------
Dim a As Variant
a =  objADORS .GetRows
'---------------------------------------
↑これも、配列でないと出来ない何かしらの処理をして、一気にセルに格納すれば、いいかもしれない。






 

0 件のコメント:

コメントを投稿