Access 抽出条件を自動で入力する方法

このQ&Aのポイント
  • Access2007を使用している場合、VBAを使って抽出条件を自動で入力することが可能です。テーブルのフィールドに不要なデータが入っている場合、指定した条件に一致するデータのみを抽出することができます。
  • 具体的な方法は、マクロないしVBAを使用して、抽出条件に指定する文字列を自動で入力することです。例えば、抽出条件が「フィールド1 like 'a*' OR フィールド2 like 'b*' OR フィールド3 like 'c*' OR フィールド4 like 'd*' OR フィールド5 like 'e*'」であれば、VBAを使ってこの文字列を自動で生成し、抽出条件の入力欄にセットすることができます。
  • これにより、毎回手動で抽出条件を入力する手間が省けるだけでなく、正確な条件を指定することができるため、効率的なデータ抽出が可能となります。VBAの知識が必要ですが、初心者でも学習すれば実装できるでしょう。
回答を見る
  • ベストアンサー

Access 抽出条件を自動で入力したい

お世話になります。 マクロもVBAも現在鋭意勉強中の初心者ですが、よろしくお願いします。 取引先から送られてくるテーブルの、とあるフィールドにいつも不要なデータが入っています。 作業は、その不要なデータの削除から取り掛かるのですが、これが何気にめんどくさくて 自動化できないものかと、今回、質問させていただきます。 結果として、       フィールド1 フィールド2 フィールド3 フィールド4 抽出条件        like "a*" または           like "b*"               like "c*"               like "d*"               like "e*" ↑のような状態に、マクロないしVBAを使用し、抽出条件に、上記の文字列を自動で入力することは可能なのでしょうか? また、可能ならばどのようにすればいいのでしょうか? テーブルのフィールド数は毎回違いますが、 フィールド2に不要なデータが入っているのは決まっています。 フィールド2のデータ型はテキスト型です。 Access2007を使用しています。 どうぞ、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

一度、手作業でクエリ作成して、 「削除対象抽出」とでも名付けて保存しておく。 テーブル名が毎回同じなら、そのまま再実行 Select * from としておくことで、列数が変化しても問題無し インポートの都度、テーブル名が変るなら以下 クエリのデサインビュー>SQLビューで見れば以下のようになってるはず (折り返してあるが、実際は一行) Select * from [インポートしたテーブル名] Where [フィールド2] like ’a*’ or [フィールド2] like ’b*’ or く略> or [フィールド2] like ’e*’; [インポートしたテーブル名]を書きかえて再実行 VBAでやりたいなら DoCmd.RunSQL ”Select * <略> ’e*’” VBAでクエリを作りたいならQueryDefを見て下さい

HARDAccess
質問者

お礼

早速の回答ありがとうございます またお礼が遅くなり申し訳ございません。 クエリを保存しておくだけで良かったんですね。 少し難しく考えていたみたいです。 とても参考になりました、今後もどうぞよろしくお願いします。

関連するQ&A

  • [Access]クエリの抽出条件について

    アクセス初心者です。よろしくお願いします。 クエリの抽出条件に別テーブルのフィールドをあいまい検索で入れたいのですが方法がわかりません。 データシートビューには検索したいテーブル(tbl_1)と 検索する文字列が入ったテーブル(tbl_2)の2つを表示させています。 デザイングリッドは検索したいフィールドを表示し、 抽出条件にLike "*[tbl_2]![フィールド名]*"と入れましたが該当するものがあっても表示されないのです。 どうしたらよいでしょうか。ご伝授ください。

  • Access の 抽出条件について

    Accessの抽出条件について教えてください (1)のテーブルに AAAAA BBBBB CCCCC ##AAA #BBBB ###B とあるとします。 このデーターの「#」で始まるものだけを抽出したいのですが、どのような方法がありますか? 「Like "#*"」だと#をテキストと見てないせいか抽出出来ません。 このようなテキストと見出していないものの抽出する方法をご存知の方どうぞ教えてください。

  • ACCESSでのクエリ抽出条件について

    ACCESS超初心者です。 自分なりに調べたのですが、知識不足によりお手上げ状態です。 クエリの抽出条件について、どなたかご教授いただけますでしょうか? OS:XP ACCESS:2000 ・フォーム上に自由に入力できるテキストを3つ用意します。 ・入力された3つのテキストが1つのフィールドに含まれるものをクエリで抽出したい。 ・3つのテキストが空欄の場合は全てのデータを抽出したい。 ■フォーム上のテキスト  テキスト1:テキスト10  テキスト2:テスト11  テキスト3:テスト12 ■テーブル  フィールド1:問合せ内容(1) ■クエリ内の抽出条件 Like "*" & [Forms]![F_検索テスト]![テキスト10] & "*" And Like "*" & [Forms]![F_検索テスト]![テスト11] & "*" And Like "*" & [Forms]![F_検索テスト]![テスト12] & "*" テキスト名がおかしいのですが、ご了承下さい。

  • accessの抽出条件で数字の比較をしたい

    office2010 サーバのviewテーブルをaccessでODBC接続し、accessからexcelにデータを持ってくる 構成があります。 accessのHYOHEN_NOというフィールドに対し、クエリ条件をlike "15%"として2015年のデータを抽出しています。 最初15%は15*としていたのですが、excelのマクロADOで持ってくる場合は15%とのことで 上記クエリ条件にしています。 来年になると、このフィールドには16-****というデータが入ってきます。 このフィールドは、数字から始まるデータだけでなく、英語から始まるデータも入っています。 HYOHEN_NOフィールドで先頭の2文字が14より大きいものを抽出したいのですが、 どの様にしたらよいでしょうか?

  • Access 抽出クエリーについての条件

    先の投稿に重複しますが、 それぞれ異なるテーブルについて、 クエリーで、、 Between #5:00# And #19:00# Between 500 And 1900 上記の方法等で同じ数値ではなく、 期間に幅をもたせて一致としそれぞれの 一致データを抽出するクエリーは つくれますか? もちろん抽出対象のテーブル、列はそれぞれ同じ書式です。 > between関数を使って、 フィールドのデータ型が日付/時刻型の場合 抽出条件欄に、 > 5:00から19:00を抽出したい、 Between #5:00# And #19:00# > 5:00から25:00を抽出したい、 Between #5:00# And #23:59# OR Between #0:00# And #1:00# Access の日付/時刻型では、25:00 というような表現はできないので、上記のように分割することになります。 > また上記がテキストだった場合も、 > 500から1900を抽出したい フィールドがテキスト型の場合、テキスト比較になり数値比較とは異なる抽出結果になるので、 フィールドに Val([テキスト型フィールド]) と式を設定して数値型に変換します。このの抽出条件に、 Between 500 And 1900 と設定します。 通報する

  • 除外抽出条件

    こんにちは、SQLの抽出条件でわからないところが在るのでよろしくお願いします。 テキスト型でメールアドレスの入ったフィールドに対して抽出をしたいのですが、"@" の含まれていないフィールドの抽出の仕方がわかりません。含まれる場合は select * from テーブル where メールアドレス like '%@%' で出来ます。含まれない場合、 select * from テーブル where メールアドレス <> の後にどう記述すれば言いのでしょうか?

  • アクセスクエリ ハテナを抽出するには

    テーブルは 文字(フィールド) ? あ となっていて、 クエリで SELECT [テーブル1].文字 FROM テーブル1 WHERE ((([テーブル1].文字) Like "?")); とすると、 ? あ が抽出されます。 ?がワイルドカードとなり、1文字の文字列を抽出する、という条件になってしまったためだと思われますが、ワイルドカードではなく、ハテナとして抽出したい場合はどうすればいいでしょうか? エクセルのように、Like "~?"としたら、何も抽出されませんでした。

  • Access 抽出条件に「Like」と自動で表示される場合とされない場合

    ものすごく初歩的な質問で失礼します。 Accessをはじめたばかりでテキストを見ながら操作しています。 フィールドの抽出条件として例えば「*東京*」と入力すると確定した後は「Like "*東京*"」と自動で「Like」が入ります。 「ま行」で始まる抽出をしたいので「[マ-モ]*」と入力した場合は自動で「Like・・・」となりません。 この場合は、自分で入力しなくてはいけないんですか? 何か規則みたいなのがあるのであれば教えてください。 ものすごく初心者ですので「こうやって考えるといいよ」というように教えていただけると助かります。

  • Accessでの抽出について

    Accessで下記のようなテーブルがあるとします。 フィールド1  フィールド2  フィールド3 ----------------------- Aさん      20       200 Aさん      10       180 Bさん      10       300 Cさん      10       250 Cさん      30       310 条件1・・・フィールド2が「20」 条件2・・・フィールド3が「200」 この条件が当てはまる、フィールド1のデータはすべて抽出というふうにしたいのですが・・・。 (上記のテーブルでは、1件目と2件目のレコードがあてはまります。) どのようにして抽出したらよいでしょうか?よろしくお願いします。 Access2000を使用します。

  • 日付と文字列を条件としてDLookup関数で抽出さ

    日付と文字列を条件としてDLookup関数で抽出させたいです。アクセスです。 テーブル1のデザイン フィールド名 ID(数値型) フィールド1(テキスト型) 取得日時(日付/時刻型) テーブル1のデータ ID  フィールド1  取得日時 1       あ  2013/01/05 2       い  2013/01/05 この条件でvbaでIDの値を抽出したいのですが MsgBox DLookup("[ID]", "テーブル1", "[取得日時] = #2013/01/05#") だと、1が返ってきちゃうのでフィールド1でもフィルタをかけたいのですが どうやればいいでしょうか? MsgBox DLookup("[ID]", "テーブル1", "[取得日時] = #2013/01/05#" And "[フィールド1] = 'あ'") にすると、型が一致しません。(Error 13)になります。 ご教授よろしくお願いします。

専門家に質問してみよう