• 締切済み

Excelワークシート上にSQL文を書き込み取得したデータをワークシート上に取得

はじめましてこんにちわ。 現在ExcelとSQLServerでADOを使ってデータを取得したいと思っています。 SQL文をワークシート上に書いてそれを読み込んでSQL文を実行するようにしたいのですが、それを取得したあと、データをExcelワークシートに表示させる方法が思いつきません。 SQL文で指定するデータは任意の文です。そのため取得されたフィールドがいくつできるかわからない状態です。 例えば、SQL文であったら SELECT 商品ID,商品名,価格 from 商品テーブル なりますが、商品ID,商品名,価格フィールドを自動的に Excelフォーム上に作りたいということです。 ・基本的にSELECT文しか使わない ・SQL文は任意のSQL文である の条件がありますがそれはできるのでしょうか? よろしくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

もともとSQLはSELECTを例にとると、一括で条件に合うものを返され、見せてくれるが、各行(レコード)単位では捉えさせる考えはなかった。80年代ぐらい?までの標準SQL。 それでは不便なので、抽出結果を引き取って、1レコードづつ返してくれる仕組み(レコード処理)が備わった。 (1)カーソル処理や (2)ADOで処理などとの連携である。 Accessはカーソル処理の仕組みはない。 後者は http://www.geocities.jp/ak09z/vec/vba/ado.htm などの例参照。 一方エクセルのシートにデータをセットするときは 行(レコードごと)列ごと(項目ごと)に分離しないとインポート出来ない(セルに値をセットできない)ので、(2)のようなものの利用経験が必要でしょう。結構勉強が必要と思う。 >SQLServerを使う、でなければMSクエリ(エクセルでデーター外部データの取り込み) http://www11.plala.or.jp/koma_Excel/contents6/mame6041/mame604101.html http://office.microsoft.com/ja-jp/excel/HA100996641041.aspx http://www.ie.reitaku-u.ac.jp/~ykago/lectures/db/odbc/odbc03.html などもある。

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

参考になりますかね。 http://support.microsoft.com/kb/246335/ja 要するに、こういう風にオブジェクトをVBA上で定義し Dim DBCNC As New ADODB.Connection Dim DBREC As New ADODB.Recordset こういう風にコネクションを作成し DBCNC.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=xxx.mdb" こういう感じでシートに貼り付けるんです。 DBREC.Open "SELECT xxx FROM xxxDB", DBCNC Worksheets("Sheet1").Range("A2").CopyFromRecordset DBREC 詳細は「CopyFromRecordset」で検索すると色々出てくると思います。

関連するQ&A