
こんにちは
「データベースなら任せて!!」
という方におたずねします。
最近、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で質問しましょう!
似たような質問が見つかりました
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
- Excel(エクセル) Excelについて質問です。 シート1の検索値例えば *ABC* をシート2.3.4から検索して、シ 5 2023/02/17 23:30
- Excel(エクセル) EXCELで、漢字のみ抽出する式を教えてください。 6 2022/04/27 14:40
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) スキルシートのエクセルの項目に 2 2023/04/04 22:41
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
型 varchar から型 numeric へ...
-
エクセルのフォームについて(...
-
ACCESSで条件付き書式の設定方法
-
OpenOfficeのBaseでExcelのデー...
-
エクセルの重複データの曖昧検索
-
【パフォーマンス】ファイル読...
-
カンマ区切りで格納するカラム...
-
ハイフン無しの電話番号データ...
-
Accessのクエリのプロパティ
-
データのインポートに失敗します。
-
オラクルのLONG RAW型のテーブ...
-
データベースのデータからグラ...
-
ACCEESS 2010
-
学校でSQLについて学んでいます...
-
アクセスを軽くしたい
-
リナックスのデータをwindowsX...
-
アクセスがエクセルより優れて...
-
あなたの身近にあるデータベー...
-
Accessが開きません!!
-
Access→Oracleデータ参照にはAD...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
型 varchar から型 numeric へ...
-
エクセルのフォームについて(...
-
ハイフン無しの電話番号データ...
-
オラクルのLONG RAW型のテーブ...
-
カンマ区切りで格納するカラム...
-
ACCESSで条件付き書式の設定方法
-
OpenOfficeのBaseでExcelのデー...
-
エクセルの重複データの曖昧検索
-
【ACCESS】複数のパソコンから...
-
ODBCを使わないでExcelへ連携
-
データのインポートに失敗します。
-
〔VBA・マクロ〕EXCELからAC...
-
社内サーバーとデータベース
-
Access or SQLServer どちらを...
-
【パフォーマンス】ファイル読...
-
拡張子「**.mdx」のファイル...
-
Access管理とExcel管理
-
Word、一太郎、PDFのデータベー...
-
ACCESSではどの程度の規...
-
リスト形式の表とデータベース...
おすすめ情報