プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (3件)

初めまして。


↓のサイトはいかがでしょうか?データベース操作という項目の中にデータを取得する方法が書かれています。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …

但し、ACCESS VBAとSQLの知識も必要になると思うので、下記のサイトを参考にしてみて下さい。
ACCESS VBA:http://www.accessclub.jp/vbakaisetu/index.html
SQL:http://www.accessclub.jp/sql/index.html
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/02/17 12:31

こんばんは。



もっとも簡単な方法は、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のフィルタオプション程度しかありません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/02/17 12:31

  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に関してはこれで十分かと・・・。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/02/17 12:32

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