ExcelとOracleの連携方法

このQ&Aのポイント
  • ExcelとOracleを連携させるための方法について説明します。
  • VBAを使用してExcelから別のサーバー内のOracleに接続する方法について解説します。
  • CONNECTSTRINGの設定やパスの記述方法についても説明します。
回答を見る
  • ベストアンサー

excelとoracleの連携

お世話になります。 インターフェースにexcelを使用し、 oracleをデータベースとして活用した 仕組みを開発したいと考えております。 ネットで下記コードを参照しましたが、 excelのvbaを起動するpcから下記コードで 別のサーバー内のoracleに接続する際、 パスの記述はどの様にしたら宜しいのでしょうか。 また、CONNECTSTRINGに代入する文字列は oracleの何処を調べれば分かりますでしょうか。 なんとも初心者すぎる質問内容で大変恐縮 致しますが、何卒ご教示頂けます様、 宜しくお願い申し上げます。    記 Sub prcAdoOracleDB() Dim adoCON As New ADODB.Connection '(1)ADOを使いORACLEのDBを開きます adoCON.Open "Driver={Microsoft ODBC for Oracle};" & _ "CONNECTSTRING=ADRSORA; UID=HAPPY2; PWD=ISLAND;" '(2)データベースのクローズ adoCON.Close End Sub

  • Oracle
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • ytsg
  • ベストアンサー率58% (7/12)
回答No.1

回答がつかないようなので、根本解決にはならないでしょうが、参考までに。 私自身、Oracelを管理していないので、Oracleのどこを見れば良いか、は分かりませんが、Oracleのデータを利用できるならOracel自体を操作しなくても、Excelで見てみることはできます。 以下Excel2003を使用した場合です。 使っていないシートを表示しておいて、 [データ]-[外部データの取り込み]-[データの取り込み]-[新しいソース]ボタンクリックで「データ接続ウィザード」が表示されます。 接続するデータソースの種類で「ODBC DSN」を選択し[次へ]ボタンをクリック 「接続するODBCデータソース」で「OracleDNS」を選択し[次へ]ボタンをクリック すると「Oracle ODBCドライバ接続」が表示されます。 ここに表示されるサービス名が今接続できるOracleのデータソース名(CONNECTSTRINGに代入する値)です。 ここで実際にユーザー名とパスワードを入力してデータを取得することが出来るかテストできるので、ユーザー名とパスワードが有効か確認することが出来ますよ。 Excel2007以降ではメニューが変わってきますが、外部データの取り込みは出来るはずなので、同様に見ることはできると思います。

miruchoko
質問者

お礼

ご回答頂き有難うございます。 大変参考になりました。 ODBC設定後、excelからご回答の様にして接続する事が出来ました。 しかし、VBAではエラーが出てしまいました。 これは、別扱いでまた新規に質問したいと思います。 有難うございました。

関連するQ&A

  • EXCELからORACLEのテーブルをselectしたいのですが、うま

    EXCELからORACLEのテーブルをselectしたいのですが、うまくいきません。 ご指導のほどお願いいたします。 下記サンプルをネット('Access VBA Tips)で探し実行しました。 Access版だからいけないのでしょうか? adoCON.Open "DSN=company_viewer; UID=jxxx; PWD=yjxxx;" のオープン・クローズは正常終了します。 Set adoCON = Application.CurrentProject.Connection が実行できません。 実行時エラー 438 オブジェクトはこのプロパティまたはメソッドをサポートしていません。 が出てしまいます。 Excelではだめなのでしょうか? 教えてください。 よろしくお願いいたします。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー--------------- Sub prcAdoOracleODBC() 'Access VBA Tips '4.3 ORACLEのDBを開く・閉じる/ODBCを使う Dim adoCON As New ADODB.Connection Dim adoRS As ADODB.Recordset '?ADOを使いADRSODBCというデータソースをオープンします adoCON.Open "DSN=company_viewer; UID=jxxx; PWD=yjxxx;" 'データベースのオープン(データベースオブジェクトの作成) Set adoCON = Application.CurrentProject.Connection 'レコードセットの作成(SELECT文の実行) Set adoRS = adoCON.Execute("select * from casUR") 'レコードセットのクローズ adoRS.Close 'データベースのクローズ adoCON.Close 'オブジェクト変数のクリア Set adoRS = Nothing Set adoCON = Nothing End Sub

  • Microsoft ODBC For Oracle の設定方法

    Oracle9iです。 Oracle in OraHome92 のドライバで以下の方法でデータベースに接続していました。 Set ObjConn = Server.CreateObject("ADODB.Connection") ObjConn.open ("DSN=dsn;UID=uid;PWD=pwd") マイクロソフトから出ているドライバもあるということを知ったので、Microsoft ODBC For Oracleで接続するにはどうしたら良いか教えて下さい。 よろしくお願い致します。

  • ADOのExecuteメソッドで交互にエラーが出る

    こんにちは。 ExcelでADO+ODBCを用いてローカルのMySQLにアクセスしています。 とあるサイトから参考にさせてもらって作成した以下のソースで、 シート上のボタンをクリックしたら ODBCに設定したDSNのテーブル一覧をシートに出力 するというマクロなのですが、実行してみると正常終了とエラーが交互に繰り返されます。 エラーが出るときにデバッグしてみると標準モジュールの Set adoRS = adoCON.Execute("SHOW TABLES;") を実行した時点でエラー(赤丸の×でエラー説明なし)がでて強制終了します。 この原因について心当たりがありましたら教えてください。 ****シートモジュール**** Private dsn As String Private uid As String Private pwd As String Private strsql As String Sub para_get() dsn = Range("C6") uid = Range("C7") pwd = Range("C8") strsql = Range("C9") End Sub Sub ボタン1_Click() Dim errflag As Integer errflag = 0 Call para_get errflag = DBconnect(dsn, uid, pwd) If errflag <> 0 Then MsgBox "データベースに接続できませんでした" Else MsgBox "データベースに接続できました" End If errflag = sql_exe End Sub *****標準モジュール****** Dim adoCON As New ADODB.Connection Public Function DBconnect(dsn As String, uid As String, pwd As String) Dim errflag As Integer errflag = -1 On Error GoTo errflag 'Access VBA Tips '4.5 MySQLのデータベースを開く・閉じる 'ADOでデータソースをオープン adoCON.Open "dsn=" & dsn & ";uid=" & uid & ";pwd=" & pwd & ";" errflag = 0 Exit Function errflag: 'データベースのクローズ adoCON.Close Set adoCON = Nothing End Function Function sql_exe() As Integer Dim adoRS As New ADODB.Recordset 'レコードセットの作成(SELECT文の実行) Set adoRS = adoCON.Execute("SHOW TABLES;") Range("B15").CopyFromRecordset adoRS 'データベースのクローズ adoRS.Close Set adoRS = Nothing End Function

  • ExcelとOracleの連携について

    お世話になります。 Excelで[データ]-[外部データの取り込み]-[データの取り込み]-[新しいソース] -「ODBC DSN」-「接続するODBCデータソース」-「OracleDNS」 -「Oracle ODBCドライバ接続」ではOracleに接続する事は出来、データも Excel上に表示する事が出来ました。 しかし、下記HPの http://www.atmarkit.co.jp/fdb/rensai/excel2oracle02/excel2oracle02_2.html サンプルコードを元にVBAコードを作成したのですが、 'データベース接続処理がうまくいっていない様で、 Err_Han: ' エラー処理 MsgBox (Err.Description) で、「ORA-12154:TNS: 指定された接続識別子を解決できませんでした」 と言うエラーになってしまいます。 VBAにてADOの参照設定とかしていないのですが原因はそれでしょうか。 どなたかご親切な方、ご教示くださいます様、宜しくお願い致します。

  • エクセルVBA_ADO「ファイアホースモードの間はトランザクションを開

    エクセルVBA_ADO「ファイアホースモードの間はトランザクションを開始できない」 最近、エクセルVBAからSQLサーバーを編集するプログラムの勉強をはじめ、以下のサイトを読みながらテストプログラムを走らせています。 http://www.happy2-island.com/access/gogo03/capter00306.shtml そして、以下のようなコードを走らせて見ると、「ファイアホースモードの間はトランザクションを開始できません」とのエラーが出ます。 コードを以下に記します((2)トランザクションを開始します←ここで上記のエラーが出ます) Sub prcAdoSQLServerDB() Dim adoCON As New ADODB.Connection Dim adoRS As ADODB.Recordset '(1)ADOを使いSQL ServerのDBを開きます adoCON.Open "Driver={SQL Server};" & _ "server=aaa\db; database=a1; uid=a; pwd=a;" 'レコードセットの作成(SELECT文の実行) Set adoRS = adoCON.Execute("select * from 明細") 'レコード追加のSQLを定義(フィールド名省略すると、nullを入れようとする) strsql = "INSERT INTO 詳細 (得意先コード) Values(000010)" '(2)トランザクションを開始します adoCON.BeginTrans '(3)レコード追加のSQLを実行します adoCON.Execute strsql '(4)SQL実行結果の判定 If Err.Number = 0 Then '(5)SQLが正常終了したら追加を反映します adoCON.CommitTrans Else '(6)SQLが異常終了したら追加の破棄とエラー内容の表示をします adoCON.RollbackTrans End If End Sub 何が原因なのでしょうか。

  • FTPサーバー上のデータにADO接続したい

    WINDOWS2008サーバー/クライアント Win7 FTPサーバー上にあるEXCELファイルから、同じFTPサーバー上のACCESSファイルへ ADO接続したいのですが、(そのエクセルをクライアントPC Win7から実行します) Dim adoCON As New ADODB.Connection adoCON.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" _ & "Data Source=IPアドレス" & ";DATABASE=accdb名" & & "; UId=FTPユーザー名 ; PWD=パスワード; " ではエラーになってしまいます。 どなたか教えていただけませんでしょうか? どうぞよろしくお願いいたします。

  • エクセルvbaでpostgresに接続をしようと思っています。

    エクセルvbaでpostgresに接続をしようと思っています。 vba、postgres、sql初心者です。 今エクセルからデータベースにアクセスする方法について勉強しています。 いろいろなサイトを参考にしているのですが、いまひとつ理解が出来ていません。 今のところ下記のプログラムでデータの取得は出来たのですが、 同様にconnectionオブジェクトのexcuteからinsertのsqlを流したところ うまくいきませんでした。 必要な分野が全部初心者レベルですので、多分いろいろ間違っていると思うのですが、 どこが間違っているのかわかりません。 1.どこが間違っているのでしょうか? 2.それから接続の確立や、データの取得方法がなんだかいろいろあるようなのですが、   どのような流れ、方法でやるよう覚えるのがいいのでしょうか? 質問内容が漠然としていてすみません。わからない部分がわからないと言う状態ですので、 これが精一杯です。申し訳ないのですがどなたか初心者にもわかるようご説明をお願いします>< 環境はwindowsXP,office2003,postgres8.4です。 '***** 接続テスト(select) ******** Sub postgresConnectTest() Dim adoCON As New ADODB.Connection 'コネクションを開く adoCON.Open "Provider=PostgreSQL;Data Source=localhost;location=postgres",_ "postgres", "postgres" 'データ取得 Dim adoRec As ADODB.Recordset Set adoRec = adoCON.Execute("select * from employee where name like '%田%'") '結果の表示 Do Until adoRec.EOF MsgBox adoRec.Fields(1).Value adoRec.MoveNext Loop 'レコードセットのクローズ adoRec.Close 'コネクションのクローズ adoCON.Close End Sub '****** 接続テスト(insert) ******* Sub postgresInsertTest() Dim adoCON As New ADODB.Connection 'コネクションを開く adoCON.Open "Provider=PostgreSQL;Data Source=localhost;location=postgres", _ "postgres", "postgres" 'sql流す adoCON.Execute ("insert into employee values('00008','fujita'," & CDate(DateSerial(2010, 10, 1)) & ",38,'001'") 'コネクションのクローズ adoCON.Close End Sub

  • PostgresのViewをExcelのVBAでレコード取得できない

    はじめまして。mady1234と申します。 Postgresを利用した社内ツールを作成しています。 Postgresのテーブルからレコード取得は出来ますが、Viewからの取得が出来ません。エラーが発生します。 実行時エラー'-2147467259(8004005)': 環境はサーバーはVine4.2 Postgres8.3 クライアントのOSはXP Excelは2003です。 色々と検索しましたが、テーブルのレコード取得の方法はあってもビューは見つけれませんでした。 ご教授の程、宜しくお願いいたします。 --------------------------以下、VBAの記述です-------------------  Dim row1,col1, as integer row1=1 col1=1 Dim adoCON As New ADODB.Connection Dim adoRS As ADODB.Recordset Set adoCON = New ADODB.Connection adoCON.CommandTimeout = 0 adoCON.ConnectionString = "DSN=PostgreSQL30;" & _ "uid=postgres;" & _ "pwd=;" adoCON.Open Set adoRS = New ADODB.Recordset adoRS.Source = " SELECT * from View1;" adoRS.ActiveConnection = adoCON adoRS.CursorType = adOpenKeyset adoRS.LockType = adLockOptimistic adoRS.Open Do Until adoRS.EOF Worksheets("sheet1").Cells(row1, col1).Value = adoRS!usuryou adoRS.MoveNext row1 = row1 + 1 Loop adoRS.Close adoCON.Close Set adoRS = Nothing Set adoCON = Nothing

  • Access2003(VBA)でADO接続時にルーターのセッション増加

    早速質問させていただきます。 WindowsXP上のAccess2003でDBServer(SQLSERVER2005Express)にADO接続でデータ要求を行うアプリを開発しました。 このアプリをDBServerがあるネットワークセグメント以外から実行するとルータのセッション数が見る見るうちに増加してルーターがハングアップしてしまいます。 調査してみたらADOのRecoredsetをMovenextする度にセッション数が増えるようです。そもそもADO接続では毎レコード毎?にセッションを張るような仕組みなのでしょうか? またこの現象を解消するにはどのような手法があるのでしょうか? ご教授のほどよろしくお願い致します。 -------------------------------------------------------------- Dim adoCON As New ADODB.Connection Dim adoRS As ADODB.Recordset '(1)ADOを使いSQL ServerのDBを開きます adoCON.Open "Driver={SQL Server};" & _ "server=SERVERNAME\SQLEXPRESS;          database=db_name; uid=sa; pwd=sa;" 'レコードセットの作成(SELECT文の実行) Set adoRS = adoCON.Execute("select * from 商品マスタ where 削除日=0") '//CSVデータ取り込み用配列の初期化 Erase arr() LineCount = 0 TblColCnt = 0 '最終レコードまで順読み込みを行う Do Until adoRS.EOF = True ReDim Preserve arr(ShouhinMSTMaxCol, LineCount) For cols = 1 To adoRS.Fields.Count - 1 TblColCnt = TblColCnt + 1 arr(TblColCnt, LineCount) = Trim$(adoRS(cols - 1)) Next LineCount = LineCount + 1 TblColCnt = 0 'レコードの順読み adoRS.MoveNext Loop 'レコードセットのクローズ adoRS.Close 'データベースのクローズ adoCON.Close 'オブジェクト変数のクリア Set adoRS = Nothing Set adoCON = Nothing --------------------------------------------------------------

  • ADOでエクセルからSQL Serverへデータを移行するには

    エクセルvbaのADOを使って、 SQL Serverの「test」という名のデータベースの「Table_1」に 新規レコードを追加する事はできますか? エクセルからアクセスには Sub test() Dim データベース名 As String Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection Set rs = New ADODB.Recordset cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & データベース名 rs.Open "Tテーブル1", cn, adOpenKeyset, adLockOptimistic rs.AddNew rs.Fields("フィールド1") = データ rs.Update rs.Close cn.Close Set rs = Nothing Set cn = Nothing End Sub で移行しています。 これをエクセルからSQL Serverへ移行させるにはどうすればいいのでしょうか? よろしくお願いします。