
こんにちは
「データベースなら任せて!!」
という方におたずねします。
最近、EXCEL2000のVBA講習をやることになりました。
VBAの基本的な説明はできるのですが、困ったことに外部データとのやり取りについては
うまく説明できません。
いろいろ調べてますが、よくわかりません。
やりたいことは、
複数のデータベースファイル(*.dbf)があります、
それをEXCEL上でフォームパネルを用意しデータを抽出・検索などできるように
制御したいのですが、
まず、
疑問(1)ODBCやSQLをVBAを使って制御しデータベースファイル(*.dbf)を扱うには。
疑問(2)データベースファイル(*.dbf)を扱えたとしてその後、どのように抽出や検索をさせるのか。
おたすけください。
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はちょっと手元に資料がないので・・・
あまりお役に立たないような内容ですいません^^;
調べたり質問したりする方向性にでもお役に立てればと思います。
調査する対象が多いので大変かと思いますが、がんばってください。
この回答への補足
アドバイスありがとうございます。
確かに今回の質問を説明するとなると本が書けるでしょうね。全体の雰囲気はわかりましたが、「ADOやDAO」はどこから導入すればよろしいのでしょうか。
SQLは少しかじったので、なんとかなりそうですが、ADOやDAOがよくわかりません。
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
CSVファイルでテキストの改行の...
-
エクセルのフィルタ抽出が固まる
-
ACCESSのSQLで、NULLかNULLでな...
-
警察はスマホに保存した動画や...
-
Accessを開きなおすとテキスト...
-
sql update で 抽出条件データ...
-
accsessで顧客コードで氏名を呼...
-
将棋のDB。「この局面と同一の...
-
帳票フォームでのあるコンボボ...
-
顧客データベースを作る場合、...
-
最新の日付とその金額をクエリ...
-
情報整理するのに、「 Fullfree...
-
データベースの勉強 公務員を目...
-
はじめてのAccess 2019 について
-
ドリームメーカーってどうやっ...
-
Accessのフォームへ、記録者の...
-
android版のMs accessはありま...
-
テキストボックスにコントロー...
-
構文エラー:演算子がありませ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースファイル(.db)を開...
-
将棋のDB。「この局面と同一の...
-
ACCESSのSQLで、NULLかNULLでな...
-
CSVファイルでテキストの改行の...
-
最新の日付とその金額をクエリ...
-
エクセルのフィルタ抽出が固まる
-
警察はスマホに保存した動画や...
-
Accessを開きなおすとテキスト...
-
顧客データベースを作る場合、...
-
シートが異なるセル同士を、相...
-
テキストボックスにコントロー...
-
DBエラーを解決したい
-
マイクロソフトAccessでsqlのas...
-
帳票フォームでのあるコンボボ...
-
Access クエリ上で表示させた割...
-
DocuWorksでの印刷
-
Excelフィルタ抽出で「検索して...
-
DB2のSELECTでカンマ編集につい...
-
android版のMs accessはありま...
-
20万行あるデータを動かしたい
おすすめ情報