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

お世話になります。
現在VB2008にて、Olacleに接続し、
SQLのSelectを行おうとしています。
以下がそのSQL文です。

Dim dtRow As DataRow
Dim sql As String = ""
sql = "select * from T_GOUKEI;"
dt = ds.Tables("T_GOUKEI")
dtRow = ds.Tables("T_GOUKEI").Rows(0)

上記がそのSQLです。
私が行いたいのは、上記の抽出結果を、
Excelに書き込むというものです。
以前、DataGridViewの内容をExcelに書き込むという質問をし、
それについては出来るようになりました。
しかし、今回はSQLの結果なんですが、うまくいきません。
以下が、Excelに書き込む部分のソースです。

    'ループでDataGridViewの指定した範囲の値を書き込む
Dim Y As Integer = 0
For i As Integer = 0 To dt.Columns.Count - 1
For j As Integer = 0 To dt.Rows.Count - 1
Dim xa As Excel.Range = xlSheet.Cells
Dim 番号 As Excel.Range = xa(i + 1, j + 1)
番号.Value = dtRow(0)
MRComObject(社員番号)
MRComObject(xa)
Y = Y + 1
Next j
Next i

だいぶ見づらいかも知れませんが、実行すると、
初めの行は書き込まれますが、
1行目の最後の列を書き込んでから
「列'11'がありません。」というエラーが出てしまいます。
ちなみにテーブルデータは10列までのなので、
10列に達した時点で、次の行を書き込むという作りにしたのですが、
その部分について、ソースの書き方をご教授願えないでしょうか。
それ以外にも、要領のいい書き込み方があれば、
教えていただきたいです。よろしくお願いします。

A 回答 (4件)

こんにちは、エクセルだけで、SQLを用いて、


データベースファイルにアクセスするには、
ODBCを利用します。

ODBCは、データーベースのサーバに、SQLサーバでも
MySQLでも、アクセスのMDBでも、他、いろいろ
選んでも、ODBCの設定が上手く行っていれば
動作すると思います。

ODBCを、Oracleでの利用は、私自身
MySQL、SQLサーバ、MDBでしか、やったことないので、

調べてみてください。

例えば、ODBCだと、エクセルのファイルもサーバファイルにも
利用できるので、その例は、

odbcの接続偏

http://www.geocities.jp/tomtomf/odbc1/odbc1.htm

odbcによる参照編

http://www.geocities.jp/tomtomf/odbc2/odbc2.htm

http://www.geocities.jp/tomtomf/odbc3/odbc3.htm

応用すれば、SQLのデータベースの参照は、
エクセルだけで、可能です。
エクセルの設定が、いろいろあるので、
一定時間間隔で、参照を繰り返したりも出来ます。

参照だけだと、エクセルの機能だけで、
何かと便利ですよ。
    • good
    • 0

追伸


ググっていたら、エクセル2007での設定例を見つけました。
便利になったのですね。
私のは、XPなので、バージョンによって、
見栄えが、違うみたいです。

http://www.microlab.jp/xcutedoc/Documents/manual …
    • good
    • 0
この回答へのお礼

Excelの操作に関しては考えておりませんでしたので、
自分でも調べてみたりして、試してみようかと思います。
わざわざ検索までしていただいて、
情報提供ありがとうございます。

お礼日時:2009/06/07 19:41

こんにちは、



>それ以外にも、要領のいい書き込み方があれば、
>教えていただきたいです。よろしくお願いします

VBもVBAも使わず、エクセルの機能でSQLが、使えますが。

どうしても、プログラミングしたいのですか。??

プログラミングの勉強ですか??
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
>VBもVBAも使わず、エクセルの機能でSQLが、使えますが。
私のイメージ的な考えだったのですが、
プログラミングでVBからOlacleに接続し、SQLのselectを行い、
さらにその結果をExcelに書き込むという流れで書いていました。
ですが、どうしてもというわけではありませんので、
ExcelからSQLを実行させる方法があるのでしたら、
よろしければその方法を、ご教授願えますか?

お礼日時:2009/06/07 16:54

Cellsの引数の使い方を間違っていますね



For i As Integer = 0 To dt.Columns.Count - 1
  For j As Integer = 0 To dt.Rows.Count - 1
    ' ココが不要
    'Dim xa As Excel.Range = xlSheet.Cells
    Dim 番号 As Excel.Range = xlSheet.Cells( j+1, i+1 )
    番号.Value = dtRow(0)
    'これは 番号なのでは ??
    MRComObject(社員番号)
    ' ココも不要
    ' MRComObject(xa)
    Y = Y + 1
  Next j
Next i
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
>Dim 番号 As Excel.Range = xlSheet.Cells( j+1, i+1 )
引数をまとめれば、開放する回数も一度で済みますね。
>MRComObject(社員番号)
すみません、間違えた内容を投稿していました・・・。
それと、
番号.Value = dtRow(0)

番号.Value = dtRow(Y)でした。
すみません、余計わかりづらくなってしまいました・・・。

お礼日時:2009/06/06 18:44

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