• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLから取得した値をEXCELへ表示したい)

SQLから取得した値をEXCELへ表示したい

このQ&Aのポイント
  • VB.NETでSQLに繋いで画面から入力された値をパラメータに結果がワークテーブルに格納されるストアドを呼び出し、結果をSELECTしています。OLEDB接続を使ってEXCELにデータを表示したいですが、うまくいきません。どなたか教えていただけませんでしょうか。
  • VB.NETでSQLに繋いでワークテーブルに結果を格納するストアドを呼び出し、その結果をSELECTしています。EXCELにデータを表示するためにOLEDB接続を使いたいのですが、うまくいきません。どなたか教えていただけませんでしょうか。
  • VB.NETでSQLに繋いで入力された値をパラメータに結果をワークテーブルに格納するストアドを呼び出し、その結果をSELECTしています。EXCELにデータを表示したいのですが、OLEDB接続がうまくいきません。どなたか教えていただけませんでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • tomo316
  • ベストアンサー率35% (51/142)
回答No.2

余分なところまで書いてしまい、混乱させてみたいですね。 DB => VB => Excel  これがやりたいわけですよね。 >' ◆ここでCOMExceptionエラーになってしまいます◆ >Recordset = cmdText.Execute このエラーの部分は「DB => VB」の部分なので現在動いているソースを使ってください。 >System.Data.SqlClient.SqlDataReaderで接続せずに >直接ADOで接続すると言うことですよね? 違います。COMオブジェクトを使う方法です。 COMは、アプリ(Excel、WORD、IE)を操作する仕様です。 詳しくは、下記を参照してください。 http://homepage1.nifty.com/rucio/main/dotnet/technique/teq2_COM.htm 「VB => Excel」の部分ですが、下記の部分だけ使ってください。 試しに、(1)に値をセットしてみてください。 >(セルに結果を貼り付けたい)のですが エクセルは立ち上がっているかと思います。 ====================== Dim xlApp As Object 'or Dim xlApp  As Excel.Application  '(ObjectかExcel.Applicationの両方ためしてみて、Excel.Applicationがエラーが無ければExcel.Applicationを使ってください 下も同じ) Dim xlSheet As Object 'or Dim xlSheet As Excel.Worksheet Set xlApp = GetObject("C:\フルパス指定\test2.xls") Set xlSheet = xlApp.Sheets("sheet1")'シート名をセット ====================== ' Excel のセルに値を代入します。 xlSheet.Cells(1, 1).Value = (1)の値をセット 処理の最後に記述 ====================== ' Quit メソッドを使って Excel を終了します。 'xlApp.Quit '(Quitがエラーが無いかテストしてください。エラーが無ければコメントをはずしてください) ' オブジェクトを解放します。 Set xlSheet = Nothing Set xlApp = Nothing ・エクセルを立ち上げておいてください。 ・エラー処理をいれてませんから、追加してください。 ・xlAppでエラーがでる場合は、参照設定を追加する。   →COMコンポーネントのMicrosoft Excel xx.x Object Libraryを追加する。

kiy0kiy0
質問者

お礼

tomo316さん ありがとうございます、解決いたしました(^^) 当初私が悩んでいたのはDBから取得した値をどうやって加工し Excelにもっていくかということだったのですが 深く悩むところではなかったですね。 久々のProgrammingだったのであわあわしてしまいました。 本当にありがとうございました。

その他の回答 (1)

  • tomo316
  • ベストアンサー率35% (51/142)
回答No.1

レスが無いようなので、参考まで。 >System.Data.OleDb.OleDbDataReaderに移したいのですが System.Data.OleDb.OleDbDataReaderでは無いのですが、EXCELが開いているとして、以下を試してみてください。 ' ADO で SQL Server に接続し、 ' パラメータ付きストアドプロシージャを実行する ' ADOのオブジェクト変数を宣言する Dim cnn As New ADODB.Connection Dim cmd As New ADODB.Command Dim rec As New ADODB.Recordset ' 接続を確立する cnn.Open "Provider=SQLOLEDB;" & _ "Data Source=(local);" & _ "Initial Catalog=pubs;", "sa", "" ' コマンドを実行する接続先を指定する cmd.ActiveConnection = cnn ' パラメータを ? マークで指定する cmd.CommandText = "reptq3 ?" ' それぞれのパラメータの値を指定する cmd.Parameters(0).Value = パラメータ (1) Set rec = cmd.Execute ' レコードを返す場合は戻り値を指定する 多分こんな感じで記述してると思います。 この部分を宣言部に記述 ====================== Dim xlApp As Object 'or Dim xlApp  As Excel.Application Dim xlSheet As Object 'or Dim xlSheet As Excel.Worksheet Set xlApp = GetObject("C:\フルパス指定\test2.xls") Set xlSheet = xlApp.Sheets("sheet1")'シート名をセット ====================== ' Excel のセルに値を代入します。 xlSheet.Cells(1, 1).Value = (1)の値をセット 処理の最後に記述 ====================== ' Quit メソッドを使って Excel を終了します。 'xlApp.Quit ' オブジェクトを解放します。 Set xlSheet = Nothing Set xlApp = Nothing ======================

kiy0kiy0
質問者

お礼

遅くなってすみません。 tomo316さん、ありがとうございます!!! 上記に書いてくださった例は System.Data.SqlClient.SqlDataReaderで接続せずに 直接ADOで接続すると言うことですよね? 初心者な質問で申し訳ないのですが これはVB.netで実現することは可能なのでしょうか。 ご回答お願いいたします

kiy0kiy0
質問者

補足

今下記のように記述しているのですが Dim cmdText As New ADODB.Command Dim Recordset As New ADODB.Recordset ' SQLStringを設定する cmdText.CommandText = "SELECT * from wk_himoku" ' ◆ここでCOMExceptionエラーになってしまいます◆ Recordset = cmdText.Execute

関連するQ&A