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

このQ&Aに関連する最新のQ&A

A 回答 (2件)

これは色々な方法がありそうです。


一番簡単そうなのは、MsQueryを使って、EXCELに転送する方法が良さそうです。
ただ、残念ながらVBAを使ってMSQueryを扱ったことがないので、別の方法(キーワードのみ)
を説明します。

EXCELのVBAから"ADO"や"oo4o"を利用して、"Recordset"を作成します。
後は、"Do Until ...Loop"を使って"Rangeオブジェクト"を使って
データを埋め込むことができます。

参考まで
    • good
    • 0

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

。。
    • good
    • 0

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

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

Qアクセスの外部データ(エクセル)の取り込み。VBA

アクセスの外部データ(エクセル)の取り込み。VBAの質問です。

アクセス2003 エクセル2003

不要な行・列がある場合の外部データ取り込みVBAを教えて下さい。
今は、エクセルで削除して取り込んでいます。

アクセスに「得意先リスト」というテーブルを作っています。

コード(テキスト型)主キー
名称(テキスト型)
フリガナ(テキスト型)
郵便番号(テキスト型)
住所1(テキスト型)
住所2(テキスト型)
TEL(テキスト型)
FAX(テキスト型)

エクセルブック[得意先リスト.xls]
シートは「リスト形式」のみです。

1~4行は不要。
5行目が見出しです。

A~AZ列までデータがあります。
必要な列は、B・C・D・F・G・H・M・N列です。
セルの書式設定は「文字列」です。

[アクセス エクセル インポート 行 列 削除]などでサンプルVBAを探しましたが見つからなかったので質問させて頂きました。
申し訳ありませんが、教えて下さい。

Aベストアンサー

手作業でやっていることを、そのまま置き換えるのが一番簡単そうです。
Access からオートメーションでExcelのBookを開き
Access で取り出しやすいように整形してから取り込む。
こんな感じ
※MDB ファイルと XLS ファイルは同じフォルダにあると仮定しています。

Sub test()
  Dim oXL As Object
  Dim oBK As Object
  Dim oSH As Object
  Dim tmpXls As String

  Set oXL = CreateObject("excel.application")
  Set oBK = oXL.Workbooks.Open(CurrentProject.Path & "\得意先リスト.xls")
  Set oSH = oBK.Sheets("リスト形式")
  tmpXls = CurrentProject.Path & "\得意先リストtmp.xls"

  With oSH
   .Rows("1:4").Delete Shift:=xlUp
   .Columns("O:AZ").Delete Shift:=xlToLeft
   .Columns("I:L").Delete Shift:=xlToLeft
   .Columns("E:E").Delete Shift:=xlToLeft
   .Columns("A:A").Delete Shift:=xlToLeft
  End With
  If Dir(tmpXls) <> "" Then
   Kill tmpXls
  End If
  oBK.saveas filename:=tmpXls
  oBK.Close SaveChanges:=False
  oXL.Quit
  Set oXL = Nothing

  'CurrentDb.Execute ("delete * from 得意先リスト")
  '↑既存レコード削除ですので必要に応じて!!
  DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
  "得意先リスト", tmpXls, hasFieldNames:=True
  DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
  "得意先リスト参考までに", tmpXls, hasFieldNames:=True

  MsgBox "終了"
End Sub

参考になるかと思われるところ(私も以前どっぷりとハマリましたorz)
http://hanatyan.sakura.ne.jp/vbhlp/ExcelErr.htm
http://homepage1.nifty.com/rucio/main/technique/teq_15.htm

手作業でやっていることを、そのまま置き換えるのが一番簡単そうです。
Access からオートメーションでExcelのBookを開き
Access で取り出しやすいように整形してから取り込む。
こんな感じ
※MDB ファイルと XLS ファイルは同じフォルダにあると仮定しています。

Sub test()
  Dim oXL As Object
  Dim oBK As Object
  Dim oSH As Object
  Dim tmpXls As String

  Set oXL = CreateObject("excel.application")
  Set oBK = oXL.Workbooks.Open(CurrentProject.Path & "\得意先リスト.xls")
  S...続きを読む

Qオラクルで外部結合

オラクル8iを使用しています。
テーブルを外部結合する場合のパフォーマンスについてお聞きしたいのですが、
下の二つのSQL文でパフォーマンスは変わってくるのでしょうか?
(外部結合記号(+)を=の前後につけた場合)

SELECT 項目 FROM テーブル1 A, テーブル2 B
WHERE A.項目1 = B.項目1(+);

SELECT 項目 FROM テーブル1 A, テーブル2 B
WHERE B.項目1(+) = A.項目1;

Aベストアンサー

テーブル1とテーブル2のデータ量によって、処理速度が
変化する可能性があります。

テーブル1とテーブル2ともにレコード件数が少なければ
たいした差は無いでしょうが、レコード件数が共に多く、
かつテーブル1とテーブル2のレコード数の差が大きければ
レスポンスに変化があるでしょう。

「実測しましょう」というのが、最も間違いのない答え
です。

Qオラクル(PL/SQL)のエラー

いつもお世話になります。
オラクル・バージョン8.1.5を使用しています。

PL/SQLを実行すると以下のエラーが発生します。色々調べたのですが、解決しません。
なぜでしょうか?(ロジックがここでは書けないので、エラーのみ記載致します)

ORA-06550:行1、列19:*PLS-00103: Encountered the symbol "." when expecting one of the following・・()-+mod この後ろは読めませんでした。

また、PL/SQLを実行したりするには、ただ単にオラクルをインストールしただけでは駄目なのでしょうか?
よろしくお願い致します。

Aベストアンサー

ORA-06550のエラーは次のような意味です。

原因: PL/SQL コンパイル・エラーが発生しました。行と列に対して示された数値はPL/SQL ブロック内においてエラーの発生した位置です。
処置処置処置処置: エラーについての情報は、次の PL/SQL メッセージを参照してください。

というわけで、読めない部分に詳しい原因が書いてある可能性があります。
その場合のエラーコードはORA-09551~の番号が振られているはずです。

下の方が書いておられるように、行1列19の"."が何らかのエラー原因だと思います。

エラーコード一覧などのマニュアルは以下の参考URLのORACLE JAPANから無料ユーザ登録をするとダウンロードできます。

参考URL:http://otn.oracle.co.jp/document/index.html

QオラクルSQLでこれは出来るのですか?

オラクルのSQLにおいて、テーブルや各フィールドのコメント(COMMENT)を取得することは出来るのですか?
もし出来るのでしたら教えてください。

Aベストアンサー

SELECT COLUMN_NAME, RTRIM(COMMENTS) FROM USER_COL_COMMENTS where TABLE_NAME='テーブル名'

で取得できます。

Qオラクルとは。。そしてSQLとは。。

こんにちわ。
とても初歩的な質問ですみません。。

「オラクル」と「SQL」って良く耳にするんですが、一体何をするものなの
でしょうか?
インターネットなどで調べて見ているのですが、私にとってはちょっと書き方が
むずかしすぎて、わかりません。
「オラクル」はなんとなく、データベースを利用する物だというくらいしか
理解できず。。。
本当に、初歩的な質問で申し訳無いのですが、どなたか教えるのがお上手で
こんな私にも解りやすくご教示していただける方がいらっしゃいましたら
是非教えていただけませんでしょうか?よろしくお願い致します。

Aベストアンサー

かなり簡単に説明してみます・・・・

「オラクル」というのはデータを蓄積するための入れ物です。箱です。きっちりと中を区分け(食べ物・飲み物・薬などに種類別に細かく)することができる便利な箱です。
さらに、それぞれの中身を誰が捨てていいのか?誰が入れたのか?のようなことも教えてくれます。
他にも機能がいっぱいあるんですがとりあえず便利な箱です。

他、DB2・サイベース(綴りわからない・・・)・Informix・SQLserver・accessなんて箱もあります。
(Informix社のDB(Informix)部門ってIBMに買収されたんですよね?)

で、「SQL」というのは
この箱の中身を操作するための言語です。
「箱にミカンが何個をあるか数えてください!」
「リンゴを捨ててください!」
という命令文です。

もちろん命令には、したがってくれます。
「ミカンは8個です」「リンゴを10個捨てました」

どうでしょう?


人気Q&Aランキング

おすすめ情報