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

Selection for my Life

いま、僕にできること。

エクセルVBA データベースに接続する準備

エクセルVBAを利用して、データベースに接続する ための準備

まずは、環境条件

windows7(32bit)

・excel2007  を使っています。

接続するデータベースは、SQLServer です。

 

では、早速、

ODBC設定

ODBC設定は簡単に説明すると、データベース接続設定をWindows側に設定して、

エクセルVBAからその接続設定を呼び出して使うということ。

[コントロールパネル]→[管理ツール]→[データソース(ODBC)] 

開いたウィンドウで、各自の接続環境に合わせて設定します。 

 

ODBCの各種設定方法はGoogle先生で検索!笑

※64bitの場合、上記のウィンドウでは設定できないようです。

[参考(無断リンクすいません)] http://ha2.hatenablog.com/entry/20120913/1347505085

 

②エクセルVBAの参照設定

エクセルを起動して、VisualBasicEditorを開き 

[ツール]→[参照設定]→[Microsoft Active Data Object 2.x Library] をチェック

 

VBAスクリプトサンプル  の順で説明していきたいと思います。

サンプルにならないサンプルコード 

'---------------------------------------------
'データベース接続
' 2013/03/05  hatcy840  
'  
'---------------------------------------------
'データベース接続関係変数
Dim cn As ADODB.Connection
Dim SQL As String
Dim rs As Recordset

    'SQLへ接続
    Set cn = New ADODB.Connection
    cn.ConnectionString = "Data Source=sysODBC3;" & "User ID=sa;" & "Password="  ←ODBC設定を呼び出し
    cn.Open ←データベース接続
  
  SQL= "SELECT * FROM SAMPLE" ←実行するSQL
Set rs = cn.Execute(SQL)   ←SQLの実行

If Not rs.EOF Then ←SQL実行して結果が空じゃなかったら以降を処理 rs.MoveFirst ←SQLで取得したレコードの先頭に移動 Do Until rs.EOF = True ← SQLで取得したレコードの最後になるまでLoop処理 '処理を記述
rs.MoveNext ←次のレコードへ Loop End If
cn.Close ←データベース切断
Set rs = Nothing ←SQLで取得したレコード変数(オブジェクト)を開放

 データベースに接続して⇒SQL実行して⇒取得したレコード分処理して⇒終了

 な感じになります。

 

ん?接続する準備 とタイトルに書いたけど、接続しちゃってますね。笑

時間は、もう少し、サンプルコードを追加したいと思います。