電子書籍の厳選無料作品が豊富!

こんにちは

「データベースなら任せて!!」
という方におたずねします。

最近、EXCEL2000のVBA講習をやることになりました。
VBAの基本的な説明はできるのですが、困ったことに外部データとのやり取りについては
うまく説明できません。

いろいろ調べてますが、よくわかりません。

やりたいことは、

複数のデータベースファイル(*.dbf)があります、
それをEXCEL上でフォームパネルを用意しデータを抽出・検索などできるように
制御したいのですが、

まず、
疑問(1)ODBCやSQLをVBAを使って制御しデータベースファイル(*.dbf)を扱うには。
疑問(2)データベースファイル(*.dbf)を扱えたとしてその後、どのように抽出や検索をさせるのか。

おたすけください。

A 回答 (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はちょっと手元に資料がないので・・・
あまりお役に立たないような内容ですいません^^;
調べたり質問したりする方向性にでもお役に立てればと思います。

調査する対象が多いので大変かと思いますが、がんばってください。

この回答への補足

アドバイスありがとうございます。

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

補足日時:2001/09/22 11:50
    • good
    • 0

かなり専門的な内容ですね。


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

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

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

関連するカテゴリからQ&Aを探す