• ベストアンサー

EXCEL2000のVBAで*.dbf形式データからデータを抽出するには(ODBCとの連携について)

こんにちは 「データベースなら任せて!!」 という方におたずねします。 最近、EXCEL2000のVBA講習をやることになりました。 VBAの基本的な説明はできるのですが、困ったことに外部データとのやり取りについては うまく説明できません。 いろいろ調べてますが、よくわかりません。 やりたいことは、 複数のデータベースファイル(*.dbf)があります、 それをEXCEL上でフォームパネルを用意しデータを抽出・検索などできるように 制御したいのですが、 まず、 疑問(1)ODBCやSQLをVBAを使って制御しデータベースファイル(*.dbf)を扱うには。 疑問(2)データベースファイル(*.dbf)を扱えたとしてその後、どのように抽出や検索をさせるのか。 おたすけください。

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

  • ベストアンサー
  • oribeyaki
  • ベストアンサー率45% (18/40)
回答No.2

私はdBASEを使用したことがないので(dbfってdBASEですよね?)、 一般的にODBCを使用する方法を書きます。 参考にできるところがあれば幸いです。 ただし、ご質問の内容に回答しようと思うと本が書けますので・・・^^; 全体の流れでご勘弁を・・ >(1)ODBCやSQLをVBAを使って制御しデータベースファイル(*.dbf) >を扱うには。 まず、Excelからデータベースまでの経路を簡単に書きます。 Excelシート  ↓↑ ExcelVBA  ↓↑ ADOもしくはDAO  ↓↑ ODBC  ↓↑ データベース まず、この経路を確保する必要があります。 ここで要求されること。 1・ODBCドライバの設定 2・ExcelVBAがADOかDAOを使えるようにする設定 3・VBAからADOかDAOを使用して、ODBC経由でdBASEデータベースを開く方法 (1、2は設定、3はVBAで記述) なぜADOやDAOというものを使うのかというと、Excel単体のVBAの機能では、外部データベースとやり取りする能力がないからです。 ない機能なら、借りちゃえってことです。 1から3までがすべてうまくいけば、Excelからデータベースまでの1本の道ができたことになりますので、その道を使って、データのやり取りが可能になります。 >(2)データベースファイル(*.dbf)を扱えたとしてその後、どのように抽出 >や検索をさせるのか。 (1)の結果、経路は確保できていますから、要求を出して、結果を受け取ることをやればいいことになります。 要求を出すには?→SQL文を使いましょう。 結果をもらうには?→レコードセット(RecordSet)変数を使いましょう。 基本的なSQL文はSQL文が使用できるデータベースなら同じなので、問題ないと思います。 レコードセット変数というのは、SQL文で要求した結果のデータというのも、縦横のテーブル構造になってますので、それを受け取るためのものです。 これは、ExcelVBAにはなく、ADOやDAOの機能になります。 レコードセットにデータが入ったら、あとはエクセルのシートにぺったんぺったん張ってください。 実際のレコードセット変数にデータを受け取るまでのコードは、一番単純なモデルにすると3~4行ぐらいですみます。 (これだけ書いておいて・・・・^^;) ほかの設定ができているとして、 DAOの場合 Dim DB As Database Dim Rec as Recordset Set DB = DBEngine.WorkSpace(0).OpenDataBase('ここに接続する設定を入れます') Set Rec = DB.OpenRecordSet('ここにSQL文が入ります') あとは、Recからデータを貼り付けるだけ。 ADOはちょっと手元に資料がないので・・・ あまりお役に立たないような内容ですいません^^; 調べたり質問したりする方向性にでもお役に立てればと思います。 調査する対象が多いので大変かと思いますが、がんばってください。

hooma
質問者

補足

アドバイスありがとうございます。 確かに今回の質問を説明するとなると本が書けるでしょうね。全体の雰囲気はわかりましたが、「ADOやDAO」はどこから導入すればよろしいのでしょうか。 SQLは少しかじったので、なんとかなりそうですが、ADOやDAOがよくわかりません。

その他の回答 (1)

  • sugiyame
  • ベストアンサー率38% (10/26)
回答No.1

かなり専門的な内容ですね。 以下のFAQページをお勧めします(^。^) 私もかなりお世話になったページです。

参考URL:
http://www.ngy.1st.ne.jp/~pinball/

関連するQ&A