• ベストアンサー

EXCEL VBAでACCESSのデータを扱いたい(初心者です)

EXCEL VBAを勉強している者です。VBAでコードを書いてACCESSのデータを抽出してEXCELでその抽出したデートを加工したい(すべてVBAでコードを書いて処理)のですが、よくわかりません。EXCEL VBAの書籍を数冊勉強したのでEXCELの中だけでデータを作ったり、加工したりは理解できているつもりです。ただ、今まで読んだ書籍には外部データベースに接続して、その後、処理をするといったことが書いてなかったので、まったく知識がありません。そこで、ACCESSへの接続の仕方、操作の仕方などについて、やさしく(私みたいな初心者でも理解できる)説明してあるサイトまたは書籍をご存知の方、お教えください。特に、今のところ、最初の接続のところがわからないので接続について詳しく説明してあるサイトなどお願いします。

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

  • ベストアンサー
回答No.2

初めまして。 ↓のサイトはいかがでしょうか?データベース操作という項目の中にデータを取得する方法が書かれています。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130.html 但し、ACCESS VBAとSQLの知識も必要になると思うので、下記のサイトを参考にしてみて下さい。 ACCESS VBA:http://www.accessclub.jp/vbakaisetu/index.html SQL:http://www.accessclub.jp/sql/index.html

tomo_kko
質問者

お礼

ご回答ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 もっとも簡単な方法は、Excelにあるデータテーブルを使うことですね。 マクロは、そんなにいりませんから。ただ、ワークシートが場所的に限られるので、あまり利口な使い方ではありませんが、コードもほとんど記録マクロだけで済ませられます。(内部では、ODBCを使っています) そうでなかったら、だいたい、ADOを使いますね。私は、DAOは、今は、ちょっと使わないですね。(^^; 今、ネット検索してみましたが、本当に、Excel VBAでは、あまり多くないですね。 技術評論社から、谷尻かおりさんという方の『データベースプログラミング』シリーズで、Excelとの組み合わせの本が出ていたはずです。(『完全活用ガイド』とかいう名前です)Excel VBAは使っても、別の分野なのです。 この方は、ずっと、このシリーズをいろんな組み合わせで出し続けています。私自身は、VB6 との組み合わせで本を購入しました。ちょっと本が高いですから、入門レベルでしたら、ネットの中だけでも十分かもしれません。 >最初の接続のところがわからない 私が、安易なコードを書いてもしょうがないし、いろいろ探した挙句、やっぱり#2さんの回答の通り、AccessClub しかないって感じなってしまいました。 ADO http://www.accessclub.jp/ado/index.html 「ACCESS VBAとSQLの知識も必要」 の二点セットなんですが、別々の学習が必要なのですね。なお、簡易型なら、SQLは必要ありませんが、表現力が豊富なのです。そうでないと、せいぜい、Excelのフィルタオプション程度しかありません。

tomo_kko
質問者

お礼

ご回答ありがとうございました。

noname#140971
noname#140971
回答No.1

  A 1 CP12 2 CU12 3 EG12 4 EP12 5 EX12 次は、このように Excel にAccess.mdb のテーブルデータを表示するサンプルコードです。 Private Sub CommandButton1_Click()   Dim I         As Integer   Dim dbsCurrent   As DAO.Database   Dim rstSashizu   As DAO.Recordset   Dim strQuerySQL As String     strQuerySQL = "SELECT DISTINCT 指図名 FROM 裁断情報 ORDER BY 指図名"   Set dbsCurrent = DBEngine.Workspaces(0).OpenDatabase("D:\LECTRA\XCH\CUTFL.MDB")   Set rstSashizu = dbsCurrent.OpenRecordset(strQuerySQL)   With rstSashizu     If Not .BOF Then       .MoveFirst       Do         I = I + 1         Me.Cells(I, 1) = .Fields(0)         .MoveNext       Loop Until .EOF     End If   End With   rstSashizu.Close   dbsCurrent.Close End Sub Microsoft DAO 3.6 object library を参照させる必要があります。 ADOも使えるかと思います。 なお、それぞれ命令文のヘルプを参照すれば、DAOに関してはこれで十分かと・・・。

tomo_kko
質問者

お礼

ご回答ありがとうございました。