dポイントプレゼントキャンペーン実施中!

エクセルvbaなのですが、
adoのWHERE句は、テーブルじゃないとダメなのでしょうか?

と言うのも、
rs.Open "Q_カテゴリ WHERE 分類 like '%A%'"
だと、エラーにならないのですが、抽出もされずに全レコードが対象になってしまいます。

しかし、
rs.Open "T_カテゴリ WHERE 分類 like '%A%'"
にすれば、抽出された後のレコード数が取得されます。

エラーにならない事から、オブジェクトは存在してる事は確かなはずですが
なぜかフィルタできません。

なぜでしょうか?

A 回答 (2件)

Excelのバージョンは古いですが、


保存済みのクエリを指定してレコードセットを
開く場合、フィルタをかけるならば、
たとえば、住所録で住所が「東京」の
住所を求める場合、


Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim varAdo As Variant
Dim i As Long
Dim varSheet As Variant

  varAdo = ActiveWorkbook.Path & "\sample1.mdb"

  cn.ConnectionString = "provider=Microsoft.jet.OLEDB.4.0;" _
        & "Data Source=" & varAdo & ""
  cn.Open
  rs.Source = "Q住所録"
  rs.Filter = "[住所] = '東京'"
  rs.CursorType = adOpenDynamic
  rs.ActiveConnection = cn
  rs.Open

  varSheet = ActiveSheet.Name
  i = 5

  Do Until rs.EOF
    With Worksheets(varSheet)
      .Cells(i, 1).Value = rs!ID
      .Cells(i, 2).Value = rs!名前
      .Cells(i, 3).Value = rs!住所
      .Cells(i, 4).Value = rs!年齢
    End With
    i = i + 1
    rs.MoveNext
  Loop
  rs.Close: Set rs = Nothing
  cn.Close: Set cn = Nothing

のようにしてクエリをレコードセットとして開きます。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

お礼日時:2014/02/17 23:19

> rs.Open "Q_カテゴリ WHERE 分類 like '%A%'"


名称が Q で始まってるからにはクエリなんでしょ?

クエリの結合時になんらか失敗して、Nullになってませんか?

rs.Open "Q_カテゴリ WHERE 分類 is null;

rs.Open "Q_カテゴリ WHERE 分類 is not null;

で結果見てみるとか。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

お礼日時:2014/02/17 23:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!