非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

共有するファイルを扱う場合はデータをAccessに(2) VBAの場合

      2016/06/11

[ad#top-1]
 

Accessの使い方についてはここでは書きません。ググってもらえれば確認できるかと思います。今回はAccessで保存したデータをExcelVBA側で読み込む方法について書きたいと思います。

まずは、Accessには次のようにデータを保存したとします。フィールド名は「名前」「年齢」「出身地」の3つで以下のようにデータを保存しています。

ここからVBAでデータを参照するわけですが、その前にVisual Basic Editorの設定が必要になります。「ツール」-「参照設定」を選択し、

以下のようなウィンドウが現れたら、「Microsoft ActiveX Data Objects 2.x Library」を選んでください。もっとも項番の大きいものを選んだ方が無難でしょう。Windows7 + Office2010の場合は2.8を選んでいます。※6.1もありますが本来はこれを選ぶべきだった??

で、プログラミングです。以下はデータベースを読み込むコードとなります。

Sub DB読込()
Set myCon = CreateObject(“ADODB.Connection”)
myCon.Open _
“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database2.accdb”
Set myRS = CreateObject(“ADODB.Recordset”)
myRS.Open “名簿”, myCon, adOpenForwordOnly, adLockOptimistic

myRS.Filter = “年齢>=30” ‘・・・(1)

r = 3
Do While Not myRS.EOF
Cells(r, 1) = myRS.Fields(“名前”).Value
Cells(r, 2) = myRS.Fields(“年齢”).Value
Cells(r, 3) = myRS.Fields(“出身地”).Value
r = r + 1
myRS.MoveNext
Loop

myRS.Close
Set myRS = Nothing
myCon.Close
Set myCon = Nothing
End Sub

このマクロをコールすると以下のような結果となります。ちなみにAccessに保存されているはずの「山田太郎」さんのデータが現れていませんが、これは、(1)で年齢を30歳以上というフィルターをかけているからです。

とりあえず、VBAはこんな感じです。

 
[ad#ad-1]

スポンサーリンク

 - VBA