GEN MUTO'S HOMEPAGE  エクセル大事典  エクセルVBAを極める

エクセルExcel大事典 エクセル大事典TOPページへ
 ■ エクセルVBAを極める−VBAスーパーテクニック
  アクセスのテーブルに接続してみよう!
 
■ MDBファイルに接続してみよう!
 
前回はExcelのワークシートにADOを使用して接続しましたね。今回は、AccessのMDBファイルに同じくADOを使用して接続してみましょう。
コードはほとんど前回と同じです。MDBファイルによる簡易データベースはほとんど費用もかからず簡単にクライアントサーバーシステムを実現します。

データベーステーブル専用のMDBファイルをファイルサーバーの共有ディレクトリにおき、クライアントPCからアクセスさせます。クライアントPC数が5台以下の小規模なオフィスの場合、ほとんどこれだけで間に合ってしまうことが多いです。
ただし、MDBファイルはRDBMSとは違います。トランザクションログもなにもとっていないため、万一MDBファイルが破損した場合、バックアップした時点の状態にしか戻せません。
あくまで小規模オフィスの簡易的なデータベースと捉えるべきでしょう。

まず最初にアクセスのMDBファイルを用意する必要があります。
Accessから新規のMDBファイルを作成し、"test.mdb"という名前で"test.xls"と同じ場所においてください。

次にテーブルの作成です。オブジェクトタブからテーブルを選択し、新規作成をクリックします。
新しいテーブルウィンドウでデザインビューを選択します。

テーブルデザインの画面が表示されるのでフィールド名にSyainID、SyainNAME、Kinzoku、Shozoku、Yakusyokuを数値型、テキスト型、数値型、テキスト型、テキスト型でそれぞれ定義します。
し終わったらデザインビューを閉じてください。

おっとその前に大事なことを忘れてた。SyainIDのフィールドにカーソルを移動し、ツールバーから
主キー
(鍵のアイコン)をクリックしてください。テーブルには基本的にひとつから複数のフィールドで構成される主キーが存在します。

主キーは通常、ユニークで重複を許可しません。同じSyainIDが入力されたときテーブルそのものが重複をチェックしてくれます。便利でしょ。
さてデザインビューを閉じると保存する名前を聞いてきますので"SyainMST"を入力してください。

これでテーブルが用意できました。サンプルレコードを数件入れておきましょう。
ウィンドウにSyainMSTテーブルが新規に作成されていると思いますので、ダブルクリックしてください。
エクセルのワークシートのようなものが出てきました。列の項目名にさきほど定義した項目名がでていますね。ここに直接データを入力しちゃいましょう。データは数件で十分です。

入力し終わったらこのウィンドウも閉じ、Accessも終了させましょう。
さあ下準備OKです。test.xlsからtest.mdbに接続してみましょう。

' フォームモジュールに記述ここから −−−−−−−−−−−−−−−−−−−−−−−−−
Dim CN As ADODB.Connection

Private Sub UserForm_Initialize()
  On Error GoTo ErrGyo
  Set CN = New ADODB.Connection
    CN.Provider = "Microsoft.Jet.OLEDB.4.0"
    CN.Open ThisWorkbook.Path & "\test.mdb"
  Call ClearLabel
  BtnOK.Caption = "OK"
Exit Sub
ErrGyo:
  MsgBox "SyainMSTへの接続に失敗しました", vbCritical
  BtnOK.Enabled = False
End Sub

Private Sub BtnOK_Click()
Dim RS As ADODB.Recordset
Dim SQL As String
  Call ClearLabel
  If ChkSyainID(TxtID) Then
    SQL = "SELECT * FROM SyainMST WHERE SyainID = " & TxtID
    Set RS = New ADODB.Recordset
      RS.Open SQL, CN, adOpenStatic, adLockReadOnly
    If Not RS.BOF Then
      LblName = RS.Fields("SyainNAME")
      LblKinzoku = RS.Fields("Kinzoku")
      LblSyozoku = RS.Fields("Syozoku")
      LblYakusyoku = RS.Fields("Yakusyoku")
    Else
      MsgBox "入力された社員IDは存在しません", vbCritical
    End If
    Set RS = Nothing
  Else
    MsgBox "社員IDが有効ではありません", vbCritical
  End If
End Sub

Private Sub UserForm_Terminate()
  Set CN = Nothing
End Sub
' フォームモジュールに記述ここまで −−−−−−−−−−−−−−−−−−−−−−−−−

前回とほとんど同じですね。ChkSyainID関数とClearLabel関数は割愛してあります。
標準モジュールにも変化はありません。

まず接続部ですが
CN.Properties("Extended Properties") = "Excel 8.0" の拡張プロパティが無くなっていますね。前回はExcelのワークシートに接続するためにこのプロパティを使っていました。今回はMDBへの接続なので必要ありません。
CN.Open ThisWorkbook.Path & "\test.mdb" では接続するMDBファイルのパスとファイル名を指定しています。
ThisWorkbook.Path でエクセルブックのあるフォルダを返します。test.mdbは同じフォルダ内にあるのであとはファイル名だけ教えてやればいいですね。もちろんフルパス名での指定も可能です。

ちなみにこの接続部のコードこのようにも書けます。
CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                  "Data Source=" & ThisWorkbook.Path & "\test.mdb"
CN.Open

ConnectionString プロパティにあらかじめ接続文字列をセット。あとはオープンメソッドで接続します。
やっている内容に違いはありません。

あとSQL文字列が変わっていますね。
SQL = "SELECT * FROM SyainMST WHERE SyainID = " & TxtID 前回は [SyainMST$] でシート名を指定していましたが、テーブルを指定するときは直接テーブル名を記述すればOKです。

ちなみSELECTのあとの"*"はすべての項目を表します。セットする項目を指定するときは、
SyainID, SyainNAME, Kinzoku とカンマで区切って項目名を列挙すればOKです。

FROM句のあとに取得先のテーブル名を、WHERE句に条件を記述します。たとえば SyainID > 2000 とすればSyainIDが2000を超える社員IDのデータだけを取得してきます。比較演算子はIF文のときと同じものが使えます。
他の条件も紹介しておきましょう。

BETWEEN条件
(例)SELECT * FROM SyainMST WHERE SyainID BETWEEN 1000 AND 2000
指定した2つの値の間にあるデータを取得します。
(例)では社員IDが1000から2000の間にあるデータを取得します。

IN条件
(例)SELECT * FROM SyainMST WHERE Syozoku IN ('経理部')
指定した値のリストの中にあるデータを取得します。
(例)では所属が経理部のデータのみ取得します。

LIKE条件
(例)SELECT * FROM SyainMST WHERE SyainNAME LIKE '鈴木%'
文字の検索条件を指定します。ワイルドカードで"%"と"_"が使用できます。"%"は「任意の文字数の任意の文字」を"_"は「1文字分の任意の文字」を表し、組み合わせて使用することが可能です。
(例)では名前の先頭に鈴木を含む全てのデータを取得します。



SQL文にはまだまだ沢山の記述法が存在します。すべてを一度に紹介するのは難しいので徐々に紹介していきたいと思います。
次回はSQLサーバーへの接続編です。

 

>> 次の話にすすむ


サイト内検索ができます

Microsoft Most Valuable Professional

Microsoft MVP Excel
武藤 玄 プロフィール
 

■■■ 執筆した書籍 ■■■
 

EXCEL VBA 業務自動化
 

Excel VBA を5日でマスターする本
 

仕事を速くする Excel VBA 入門
 

Excel VBAと業務改善のポイントがわかる本
 

Access VBA ベーシック スタンダード
 

Excel VBA アクションゲーム作成入門
 

■■■ 連載中の記事 ■■■
 

Excel VBAで業務改善!
 

実務で使うExcel VBA
 


TOPページ


■ エクセルVBA超入門

 ・9ステップで"Hello World!"
  からオブジェクト指向まで!
  1."Hello World!"を表示しよう
  2.基本はデータの入出力
  3.繰り返し処理
  4.シートで簡易データベース
  5.名前をつけよう
  6.構造化プログラムに挑戦
  7.構造体を使ってみよう
  8.フォームを使ってみよう
  9.オブジェクト指向に挑戦

■ エクセルVBA中級編

 ・VBAでいろんなテクニック
  変数・関数のスコープ
  引数の参照方法を明示
  配列の中身を一気に複写
  識別子がよいコードを作る
  データ定義型をもっと知ろう
  定数と列挙型を活用しよう
  エラー処理の重要性1
  エラー処理の重要性2
  いろいろな条件分岐
  いろいろな繰り返し処理
  演算子について知ろう
  文字列操作 連結 変換 置換
  文字列操作 検索 比較 書式
  日付操作関数を知ろう
  数値操作・評価・その他関数
  並び替えソートをマスター
  いろいろな検索をマスター
  VBEditorを使いこなそう
  マクロの記録を活用しよう1
  マクロの記録を活用しよう2
  VBAからVBEを操作しよう1
  VBAからVBEを操作しよう2
  VBAからVBEを操作しよう3
 ・ワークシートを使いこなす
  セルの参照をマスターしよう
  セルの選択をマスターしよう
  セルの操作をマスターしよう
  セルの書式設定をマスターしよう
  行・列の操作をマスターしよう
  シートの参照をマスターしよう
  シートの操作をマスターしよう
  ブックの操作をマスターしよう
  ウィンドウの操作をマスターしよう
  イベントプロシージャを活用しよう
  ワークシートを印刷しよう1
  ワークシートを印刷しよう2
  音声(読み上げ)機能を操作しよう
  グラフを操作しよう
 ・ユーザーフォームを使いこなす
  ユーザーフォームを使おう
  UserFormsオブジェクト
  Labelコントロール
  TextBoxコントロール
  ComboBoxコントロール
  ListBoxコントロール
  CheckBoxコントロール
  OptionButtonコントロール
  ToggleButtonコントロール
  CommandButtonコントロール
  ScrollBarコントロール
  SpinButtonコントロール
 ・VBA関数の一覧
  Aから始まる関数の一覧
  Cから始まる関数の一覧
  Dから始まる関数の一覧
  Eから始まる関数の一覧
  Fから始まる関数の一覧
  Gから始まる関数の一覧
 
■ エクセルVBAを極める
 VBAスーパーテクニック
 
 ・データベースへ接続してみよう!
  CSVファイルへの接続
  ワークシートへの接続
  mdbファイルへの接続
  SQL Serverへの接続
  ADOレコードセットの操作1
  ADOレコードセットの操作2
 ・ファイルを操作してみよう!
  FileSystemObjectの操作
  Drive File Folderの操作
  TextStream ダイアログ
  ステートメントでファイル操作1
  ステートメントでファイル操作2
 ・他アプリと連携してみよう!
  ActiveXオートメーションの操作
 ・ゲーム技でマクロを超える
  エクセルで音を鳴らす1
  エクセルで音を鳴らす2  
  スクリーン座標を取得
  様々なイベント取得
  リボンUIを制御しよう1
  リボンUIを制御しよう2
  シート上でアニメを動かそう
 
■ 一歩上行くエクセル
 基本操作の完全マスター!

 
 ・あなたはいったい
  エクセルで何をしたいのか?
  エクセルで業務効率化
  エクセル関数を使いこなす
  エクセルの便利技
  エクセルは最高の帳票ツール
 ・エクセル基本操作上級編!
  セル選択、コメント、シリアル値
  オート機能を使いこなそう!
  参照、条件付書式、入力規則
  関数をもっと理解しよう!
  配列数式を有効利用しよう!
  データの正規化をしよう!
  ショートカットキーを利用しよう1
  ショートカットキーを利用しよう2
  Office用アプリを作成しよう!
  PowerPivotとExcelで簡単BI!
 ・世間の誤ったエクセルの
  べからず集
  エクセルで文章を書くべからず
  エクセルで図形を描くべからず
  エクセルでシステムをつくるな
 
■ エクセル関連その他

 ・エクセルコミニュティにあなたも
  参加しませんか?
  Excel関連リンク・コミニュティ
 ・VBの理解がVBAをマスターする
  最短距離!
  VB関連の老舗・大家サイト
 ・エクセルExcel大事典掲示板
 ・プライバシーポリシー

2000アイテムを超えるラベルを販売
送料無料、即納対応の優良ショップ
今買っているラベルより確実に安い!
OAラベルの販売専科グラフトラベル




エクセルExcel大事典ははリンクフリーです エクセル大事典Excel大事典
お問い合わせはこちら gengengen@yahoo.co.jp

Copyright© Gen Muto 武藤 玄 All Rights Reserved,