OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

エクセルVBAにて <フォーム上から、クエリ条件を入力し外部データの内容を抽出することは可能でしょうか?>

  • すぐに回答を!
  • 質問No.156362
  • 閲覧数1467
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 32% (51/157)

こんにちは、いつも利用させていただいております。

エクセルVBAのフォーム上から、外部データの内容に対しての抽出条件(各フィールド内のデータ範囲等)を選択または入力してデータを抽出することはできますでしょうか。

これはアクセスで処理したほうが楽なのですが、それは抜きにしてお話させていただきます。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル8

ベストアンサー率 33% (18/53)

サンプル見ました。
これだけの項目に全て選択条件を設定するフォームは画面が異常に大きくなりすぎると思います。
せっかくExcelでやっているので、選択条件を項目名に対応したセル上に入力させて、それを拾って
SQLを作ってはいかがですか。

例えば、
 2行目、3行目が検索条件入力範囲で、5行目が項目名で、シート上には[ファイル選択]ボタンと[検索開始]ボタンが有るとします。  

1. まず[ファイル選択]ボタンをクリックしてもらい、該当するファイル(DB)を選んでもらいます。画面の5行目以下を初期化して外部データの全フィールド名を読込みます。

読み込んだ全フィールド名を5行目に全て表示させます
   Range("A5").activalt
   for i=1 to 項目数
activecell.offset(0,i-1).value=項目名(i)
next i

2.エクセルのシート上の2行目と3行目に、検索条件を入力してもらう
必ず2行目の方が少ない数値だとして検索条件を入れてもらいます。

3.シート上に作成した[検索開始]ボタンをクリックしてもらい、検索条件を作ってSQLを投げてあとは、結果をシートの6行目から下に書き出す。

この例では、SQL文を文字列StrSQLに入れるものとします。

   Range("A5").activalt
   StrSQL="select * from Table名 where "

   for i=1 to 項目数
if activecell.offset(-3,0).value<>""  '選択条件1
if activecell.offset(-2,0).value<>"" '選択条件2
StrSQL=StrSQL & "and" & 項目名(i) & ">=" & _
activecell.offset(-3,0).value
StrSQL=StrSQL & "and" & 項目名(i) & "<=" & _
activecell.offset(-2,0).value
else
StrSQL=StrSQL & "and" & 項目名(i) & "=" & _
activecell.offset(-3,0).value
end if
end if

activecell.offset(0,1).activate
next i

これで、SQLの条件式が出来るので、後はDBとのI/Fで出来ると思いますが。
 DBFファイルとのI/Fプログラムは作ったこと無いので、OracleでのSQLですが。
補足コメント
hooma

お礼率 32% (51/157)

本当にありがとうございます。

試しにやってみます。
なにぶん、VBAでSQLの制御する経験がないもので不安になってしまいます。
まだまだ、悩むところがあるとおもいますのでよろしくお願いします。
投稿日時 - 2001-10-25 00:29:41
お礼コメント
hooma

お礼率 32% (51/157)

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

エクセルではちょっと *.dbfデータの取り込みが難しいので、Access2000 VBAに乗り換えて考えたいと思います。

まだ、問題は解決してませんがひとまずクローズしたいと思います。
投稿日時 - 2001-10-26 18:53:55
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル8

ベストアンサー率 33% (18/53)

外部データがどんなものか解りませんが、Excelのマクロでたいがい処理できると思います。  先に外部データを読込解析し、それに基づき抽出条件を作り出し、その後listbox等に検索条件となるものをAdditemで追加すれば、外部データに対応した抽出条件をForm上に表示し、選択させることは可能です。  後はユーザの選択によって SQL文等を作成し、外部DBに投げてやり、結果をExcelのシートに書 ...続きを読む
外部データがどんなものか解りませんが、Excelのマクロでたいがい処理できると思います。

 先に外部データを読込解析し、それに基づき抽出条件を作り出し、その後listbox等に検索条件となるものをAdditemで追加すれば、外部データに対応した抽出条件をForm上に表示し、選択させることは可能です。
 後はユーザの選択によって SQL文等を作成し、外部DBに投げてやり、結果をExcelのシートに書き込めばいいのでは?

 こんなとりとめもない回答しか出来ませんが、具体例が解ればもっとなにかアドバイス出来ると思います。

 ちなみに、私はできればExcel+VBAでの処理派です。  Accessは結構いいのですが、印刷させたりするのが面倒なので、大概のことはExcelに取り込んでしまいますが。
補足コメント
hooma

お礼率 32% (51/157)

ありがとうございます。

なにぶん、応用の利かない初級レベルなもので
何をどうしたらいいか悩んでいる状態です。

補足を下記のページに記載しました。
サンプルデータもございます。

http://www7.tok2.com/home/fire/

よろしくお願いいたします。
投稿日時 - 2001-10-24 11:34:16


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ