- ベストアンサー
EXCELをDAOで操作したい
VBを使用してEXCELにあるデータをDAO(Recordsetなど)を用いて操作しようと考えています。 ACCESSをDAOで操作することはできるのですがEXCELを操作することはやったことがなく今、操作方法など色々と調べているところです。 そこでEXCELをDAOで操作する方法などが掲載されているサイトなど知っている方がおられたら教えてほしいです。 自分でも探してみたのですがなかなか思うようなところがなく質問させていただきました。 どうぞよろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
DAOはMSのデータ(ベース)にアクセスするインターフェイスを提供するオブジェクト(プログラム・ライブラリ。VB用やC用もある。)である。主に使うのは、データベースエンジンといわれるものであろう。DAOがアクセスを操作すると言う表現でなく、DAOが「アクセスが採用しているデータベース」をアクセスするとき使えるものである。 同じく「>EXCELをDAOで操作する」と言う表現はおかしいと思う。なぜなら エクセルは(1)ディスクに保存されているときのファイル形式と(2)メモリに展開されて動いているメモリ上の形式とは違うし、(3)Vierwerとしての役割で、シートを画面に見せているはたらきも違うはず。 DAOは対象とするのは、データベースファイルであって(1)の部類のもののはずだが、エクセルの(書式や計算式やその他も含まれている特殊独自の形式の)(1)は直接対象としていないはず。 アクセスのMDB形式のような、テキスト的な(?)データファイルを対象としているはず。したがってエクセルよりアクセスに一旦エクスポートして、それを対象にしてDAOを使ってアクセスしたり、加工するということになるはず。 下記は参考になりませんか。 http://www.asahi-net.or.jp/~EI7M-WKT/kakcyo09.htm http://www.asahi-net.or.jp/~EI7M-WKT/kakcyo10.htm http://www.asahi-net.or.jp/~EI7M-WKT/kakcyo11.htm http://www.cs.reitaku-u.ac.jp/~ykago/db_a_2000/dao/dao01.html http://hp.vector.co.jp/authors/VA021122/vb/dao.html
その他の回答 (6)
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルのアドインでMSQUERYと言うのがあります。 あまり本にも(WEBにも)出てきませんが、WEB照会してみてください。 http://www1.neweb.ne.jp/wa/arc/vb/QRY/QRY2.html など。 これ(MSQUERY)など何かのヒントになりませんでしょうか。 見当はずれでしたら、お許し下さい。マクロの記録が取れるかな、もし取れれば一般化する修正が出来て、自分で組むより、記述が簡略になると予想しますが。
お礼
回答ありがとうございました。 WEB参考にしてみます!
- taka_tetsu
- ベストアンサー率65% (1020/1553)
肝心なことを書くのを忘れてしまいました。 >すみません、よろしければ"ODBドライバの設定","ユーザDNS","システムDNS"をもう少し詳しく教えてもらえませんか? >どうやって作成するかだけでもわかれば嬉しいのですが…。 http://www.geocities.co.jp/SiliconValley-PaloAlto/1780/VB/VB0003.html をどうぞ。 ただ、OSがWin2000やXPだとコントロールパネルの管理ツールの中になります。 あと、WindowsやOfficeのバージョン(正確にはMDACのバージョン)などにより、「ODBC」となっていたり、「データソース(ODBC)」となっていたりしますが、どれも一緒です。 データソースの作り方ってことですと、こちらも参考になるかな? http://www5.ocn.ne.jp/~fishbird/php4/odbc/
お礼
お礼が遅くなりました。回答ありがとうございます。 設定のしかたよくわかりました! 補足説明など親切でとても嬉しかったです。参考にします。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
ryuji0202さんの質問とずれてきちゃってますが。 >>VB用とC用の区別はありません >http://www.ipl.co.jp/private/~kono/dao.html >のような例も載っていますが。VBA使う上で使うのと >くらべ、コーディング上で全く同じとは言えないのでは >ないでしょうか。 このサンプルは純粋なC++のDAOのサンプルではありません。 MFCが提供している、DAOをさらにラップしたクラスを使ったものです。 DAO自体はActiveXオブジェクトなので、C++でもVBでも一緒です。 そもそも、ActiveXは言語に依存するものではありません。 #ADOのサンプルなら結構出てくるんですが、DAOは出てきませんでしたので。 言語の性質上、VBAではValueプロパティなどの省略可能なプロパティも明示的に記述する必要は出てきますが。
- imogasi
- ベストアンサー率27% (4737/17069)
#2です。#3でご指摘の誤りがあるようで済みません。 >「DAOはMSの」の個所は直後のMS社製のデータベースに限るように取れますね。ORACLEなどのデータベースにも接続出きるので、そう取られるので、不適当です。「MS社製であって」の積もりでした。済みません。 >VB用とC用の区別はありません http://www.ipl.co.jp/private/~kono/dao.html のような例も載っていますが。VBA使う上で使うのとくらべ、コーディング上で全く同じとは言えないのではないでしょうか。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
xlsファイルを操作するためのODBCドライバは標準で入っているので、それを利用してDAO経由で操作可能です。 xlsファイルの選択は、ODBCドライバの設定で行います。 ユーザDSN、またはシステムDSNでDSNを作成すれば、あとは、他のDBと同じように扱うことが出来たはずです。 >DAOはMSのデータ(ベース)にアクセスするインターフェイスを >提供するオブジェクト(プログラム・ライブラリ。VB用やC用もある。)である。 DAO自体は、MicrosoftのDBだけにアクセスするものではありません。 他社のRDB、ISAM、テキストデータなどに対して共通のアクセス方法を提供するミドルウェアです。 DAOにVB用とC用の区別はありません。
お礼
回答ありがとうございます!! すみません、よろしければ"ODBドライバの設定","ユーザDNS","システムDNS"をもう少し詳しく教えてもらえませんか? どうやって作成するかだけでもわかれば嬉しいのですが…。 本当に知識がなくて申し訳ないです…。
- kouta52
- ベストアンサー率27% (32/116)
全然参考になるかどうかわかりませんし、 もし実現できたとしても良い案と言えるかどうかわかりませんが、 ひとつの方法として書き込みをします。 MDBにEXCELリンクでリンクテーブルを作ります。 そのMDBファイルに対して、DAOでつなぐのはどうでしょうか? あんまり良いアドバイスとは言えませんが、 ひとつの案として。。。ヘンなアドバイスですみません。
お礼
アドバイスありがとうございます! 今このEXCEL操作でやりたいことが2つあって、1つは環境にACCESSもEXCELもある状態でもうひとつは環境にEXCELしかない状態のものです。 前者にたいしてアドバイスいただいたこと試してみたいと思います。 ありがとうございました!
お礼
回答ありがとうございました。 何だか、表現がおかしかったみたいで申し訳ないです。丁寧に解説していただいてありがとうございました。 やはりMDBに一旦エクスポートしてから操作するみたいですね…。EXCELを直接操作することってできないのでしょうか? URL参考になりそうです!ありがとうございました。