読者です 読者をやめる 読者になる 読者になる

小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


Excel 2013からOracle 11gに接続する(OO4O)

Office-Excel
はじめに

ExcelからOracle 11gのデータベースに接続して、データをセルに書き出すサンプルプログラムを作ってみました。

新・門外不出のOracle現場ワザ エキスパートが明かす運用・管理の極意 (DB Selection)
小田 圭二 大塚 信男 五十嵐 建平 谷 敦雄 宮崎 博之 神田 達成 村方 仁
翔泳社
売り上げランキング: 216,008

使用したソフト
  • Excel 2013
  • Oracle 11g
テーブルレイアウト

以下のようなテーブルを用意します。
f:id:replication:20140913214517p:plain

サンプルコード
Sub Macro1()
  Dim OraSess As Object
  Dim OraDB As Object
  Dim objRS As Object
  Set OraSess = CreateObject("OracleInProcServer.XOraSession")
  ' データベース名、ユーザID、パスワード
  Set OraDB = OraSess.OpenDatabase("orcl", "user" & "/" & "password", 0&)
  
  Dim strSql As String
  strSql = "SELECT * FROM table01 ORDER BY ID ASC"
  Set objRS = OraDB.CreateDynaset(strSql, 0&)

  ' レコードが0件でないかチェック
  If objRS.EOF = False Then
    Dim i As Integer
    i = 1
    'レコードの終わりまで繰り返し
    Cells.Clear
    Do While objRS.EOF = False

      If Not IsNull(objRS.Fields("ID").Value) Then
        ' セルにコピー
        Range("A" & i).Value = CStr(objRS.Fields("ID").Value)
        Range("B" & i).Value = CStr(objRS.Fields("NAME").Value)
        Range("C" & i).Value = CStr(objRS.Fields("FURIGANA").Value)
      End If
      
      i = i + 1

      ' カーソルを次のレコードに移動する
      objRS.MoveNext
      
    Loop
  End If
  
  ' オブジェクトの解放
  objRS.Close
  Set objRS = Nothing
  OraDB.Close
  Set OraDB = Nothing
  Set OraSess = Nothing
  
End Sub
実行結果

f:id:replication:20140913214952p:plain

関連記事