• 締切済み

SQLとVBA

エクセル上のある2つのセルに年月日をそれぞれ入れ、マクロを実行する(ボタンを押す)と、 外部にあるDB(オラクル)にアクセスしSQLを実行し、セルに入れた日付の範囲内の データをエクセル上に落とすプログラムを組みたいのですが、まったく分かりません。 ちなみに、外部にアクセスすることも出来ますし、SQLで決まった期間のデータを引っ張ることも出来ます。 かなり困っています。教えてください。

みんなの回答

  • sgh
  • ベストアンサー率61% (75/121)
回答No.2

これは色々な方法がありそうです。 一番簡単そうなのは、MsQueryを使って、EXCELに転送する方法が良さそうです。 ただ、残念ながらVBAを使ってMSQueryを扱ったことがないので、別の方法(キーワードのみ) を説明します。 EXCELのVBAから"ADO"や"oo4o"を利用して、"Recordset"を作成します。 後は、"Do Until ...Loop"を使って"Rangeオブジェクト"を使って データを埋め込むことができます。 参考まで

  • maro200
  • ベストアンサー率45% (15/33)
回答No.1

何ができないのかが、わからないのですが。。。

関連するQ&A

  • Excel VBAについて

    Excel VBAについて ExcelのセルA1に日付データ(yyyy/mm/dd hh:mm)が入っています。 このエクセルファイルを開いている間、セルA1の日付(時分)が更新されたらマクロを実行するようにしたいのですが、どのようにしたらよいのでしょうか。 セルA1の日付データが更新されるタイミングは決まっていません。 セルA1の日付データが更新されたらマクロ実行というのが難しいのであれば、 10秒おきにマクロを実行というようなことができないでしょうか。 ご教授願います。

  • Excel マクロ SQL実行について

    いつもお世話になっております。 現在、Excel1997と2007でマクロを作成しております。 使用している環境は様々でOSは2000~XPまでです。 っで質問なんですが、「マクロ」というシートと「データ」というシートがあったとして、「マクロ」シートにはボタンがあり、ボタンを押すとマクロが実行します。 マクロが実行されると「データ」というシートにあるデータをマクロ内のSQLで集計して、新しい「出力」というシートに吐き出します。 現在マクロ内のSQLはDAOライブラリを使用しています。EXCELマクロ内でSQLを使用する場合にDAOやADO等のライブラリを使用せずにSQLを実行することは可能でしょうか?

  • SQLについて

    お世話になっております。 下記テーブル情報があるのですが、 日付の範囲を指定した中での全店最新在庫を 取得する必要がありまして、これを1回のSQLで 実行できるのか調べております。 日付 商品コード 店舗 在庫数 20090601 0000000001 001 3 20090601 0000000001 002 2 20090602 0000000001 001 1 上記の場合は、全店在庫数が3となる訳です。 使用しているDBが富士通製のSymfowareでして、 しかもストアド等も使用できない環境です。 SQL文のベタ打ちだけで可能なのかどうか どなたかご教授お願いできないでしょうか。 不可能な場合は、一旦日付範囲内のデータを全て 取得してプログラム内にて最新の在庫数を 求めようとしています・・。

  • Excel VBAを外部プログラムから組み込む方法

    Microsoft SQL ServerのReport Service機能を使って、データの一覧をExcelに出力するようなツールを作りました。 次に、出力されたExcelにデータを追記して、SQL Serverのテーブルにデータを書き戻すということをしようとしています。 そこで、出力されたExcelに、書き戻しボタンを組み込んでしまおうと考えたのですが、外部のプログラムからExcelにマクロを組み込むにはどうしたらよいのかがわかりません。 書き戻しボタンを持つフォーマットファイルを用意しておいて、そこにデータを出力する、というやり方もあるかとは思いますが、Report Serviceが勝手にExcelへの出力をやってくれるので、今回はそのやり方ではなく、外部からVBAを組み込むという方針で考えております。

  • VBAでSQL

    VBAでSQL データベースはOracle データ 20100723 3個 20100729 4個 20100730 1個 決めた範囲内でデータを取得するとき数字がない時は 20100724は0個にしたいのですが どうしたらいいのでしょうか? mSQL = mSQL & "AND (j.hanbai_dt BETWEEN 20100723 And 20100724 " & vbCrLf mSQL = mSQL & "or j.hanbai_dt BETWEEN 20100729 And 20100730 )" & vbCrLf エクセルに吐き出すときは 20100723 3 20100724 0 20100729 4 20100730 1 decode RIGHT JOIN とか使うことは分かるんですがどう使うか分からないのです。

  • 記録したマクロを実行するボタン

    シート1にマクロを実行するボタンを 作成したいと思います。 マクロは、シートに2にアクセスdbのクエリデータを 外部データの取り込み実行でインポートする よう記録しています。 シート1のボタンに記録したマクロを 貼り付けると、エラーメッセージで 「とりこみ先の範囲は、クエリテーブルが 作成された同じワークシートにありません」 と出ました。 同じワークシートでないとクエリ実行ボタンは 作れないのでしょうか?? よろしくお願いいたします。

  • EXCEL2003 VBAで2つのDBに接続してSQLを実行し、異なる

    EXCEL2003 VBAで2つのDBに接続してSQLを実行し、異なるDBのTBLを結合する。 こんな方法あるのかどうかわかりませんが、 VBAでDBに接続する際に同時?に2つのDBに接続し1つのSQLで違うDB同士を任意のキーで結合はできるのでしょうか? どなたかわかる方お願いします。 今考えているのは最初に1つのDBに接続し、データを取得後、再度違うDBに接続し取得したデータを先ほどのデータとVBA内で結合しようと考えています。 ほかにいい方法があればアドバイスおねがいします。 ※今まではACCESSを介してこの処理を行っていましたが引継ぎの関係でEXCELのみでこの処理を  実行しなければなりません。

  • 【Excel VBA】DBがOracleの場合のSQL文

    SQL文で日付で条件をする場合について。 以前、DBがSQLサーバーの場合の指定方法を教えていただきましたが、 Oracleの場合はどうすればよいでしょうか? その時のURL:http://okwave.jp/qa3471834.html (過去の質問から引用) >SQL Server なら >strSql = strSql & " AND 日付 >= '" & dateTarget_s & "'" ※『日付』はテーブルのカラム名で日付型、  『dateTarget_s』も日付型です Oracleの場合は、#を使用でしょうか? (組み合わせ方が解らず) すみませんが、よろしくお願いします。

  • VBでSQL-serverをプログラムする

    VBでmdbファイルを操作するプログラムを勉強していますが、データベースをサーバー管理するならば、AccessではなくSQL-serverなどを使った方が良いと聞きました。 質問なんですが、 SQL-serverには、Accessと同じようにユーザーフォームを使ってデータベースシステムを構築するような機能が付いているのでしょうか? そもそもOracle、dBase、SQL-serverといったデータベースソフトは、DBそのものを作成するソフトであって、DBシステムを構築するにはVBなどによるプログラム開発が必要なのでしょうか? 分かりにくい質問ですみません。

  • SQL変換ツールについて

    このカテゴリに書いていいのかわからないですけどSQLについて教えてください。 現在、データベースをアクセスからOracleに変更する移行作業を進めています。 その作業の中で、アクセス特有のSQL文をOracle用に変更してSQL文をDBに投げる処理 をしているのですが、SQLがそれほど詳しくないのでアクセスのSQLをOracleなど用の 一般的なSQLに変換するツール(フリー)等はないでしょうか。 SQLの違いについて詳しく解説しているHPのアドレスのみでもかまいませんので 宜しくお願い致します。