【Excel VBA】If Elseとは違う条件式(Select Case)について
エンジニアのIMMRです。Excel VBAの条件式には、以前に説明したExcel VBA 条件式(If Else)とこれから説明するSelect Caseの二つあります。1.従来のIf Else条件式If Elseは条件に合った時は処理Aを、条件に合わなかったら処理Bを実行します。では、下記のようなデータがあり、複数の条件があるとします。If Elseを使用して作成すると2種類の方法が浮かぶと思
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
こんにちは。IMMRです。
Excel VBAで下記のようなAccessで作成したデータベースを参照する方法を説明します。
図1 DB作成場所
↓
図2 DB内容
VBAでAccessで作成したデータベースを参照するには、一か所だけ設定が必要になります。
手順は下記のとおりです。
1 Visual Basicをクリック
図3 設定1
↓
2 「ツール」の「詳細設定」をクリック
図4 設定2
↓
3 下記に示す「Microsoft Active Data Objects 6.1 Library」にチェックを入れてOKをクリックします。
図5 設定3
まず、AccessのDBに接続するために
接続するための「Connection」オブジェクトと
DBのレコードを取得するために「Recordset」オブジェクトの宣言を行います。
記載方法1
Dim Connectionのオブジェクト名 As New ADODB.Connection
Dim Recordsetのオブジェクト名 As New ADODB.Recordset
つぎにAccessのDBに接続と接続します。
DBと接続するのですが、
プロバイダーとDBが投稿されているパスが必要になります。
プロバイダーはAccessのバージョンによって異なります。
プロバイダー
・Access2007, 2010は、 Microsoft.ACE.OLEDB.12.0
・Access2000, 2002, 2003は、 Microsoft.Jet.OLEDB.4.0
そして、DBが投稿されているバスを記載します。
記載方法は下記のとおりです。
記載方法2
Connectionのオブジェクト名.Open _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=DBが投稿されているバス;"
記載方法1宣言した「Connection」オブジェクトを使用します。
そして、「プロバイダー」と「DBが投稿されているバス」を記載して、
DBとの接続を行います。
※ここでは、Access2007, 2010のプロバイダーを使用しています。
次にDBのテーブルを開くのでテーブル名の記載を行います。
記載方法1宣言した「Connection」オブジェクトと「Recordset」オブジェクトを使用します。
「Recordset」に接続したDBのでテーブルを取得します。
記載方法3
Recordsetのオブジェクト名.Open "テーブル名", Connectionのオブジェクト名
今度は、記載方法3で取得したRecordsetのオブジェクト名つまり、取得したテーブルをセルにセットします。
ここではセル(A1)に取得テーブルを張り付けています。
記載方法4
Range("A1").CopyFromRecordset Data:=Recordsetのオブジェクト名
そして、取得が終わったらDBを切断します。
記載方法5
Connectionのオブジェクト名.Close
そして最後に
接続するための「Connection」オブジェクトを解放します。
記載方法6
Set Connectionのオブジェクト名 = Nothing
いままでの流れがDBに接続して、テーブルを取得する流れです。
では、今まで説明してきた記載方法を結合したサンプルプログラムをみていきましょう。
では、図1 DB作成場所にあるにある
図2 DB内容 のテーブルを取得して、セル(A1)にコピーするサンプルプログラムです。
サンプルプログラム
Sub test1()
Dim Con_DB As New ADODB.Connection
Dim Rec_TBL As New ADODB.Recordset
Con_DB.Open _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\access\DB_名簿.accdb;"
Rec_TBL.Open "生徒名簿", Con_DB
Range("A1").CopyFromRecordset Data:=Rec_TBL
Con_DB.Close
Set Con_DB = Nothing
End Sub
実行結果は下記のようになります。
図6 実行結果
図2 DB内容のものと同じであることが確認できます。
図2 DB内容
Accessのデータベースに接続して、テーブルを取得することができました。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート