はじめに
今までMicrosoft Access(以下、Access)で画像の格納や表示をしたことがなかったのですが、
画像を使用したAccessツールを使用する機会があったので使用方法をまとめてみました!
Accessで画像を使うとは
Accessでは画像をデータとしてテーブルに格納することができます。
保存したデータは下記のようにフォーム上で表示させることができます。
テーブルに画像を格納する(手動)
テーブルに画像を格納する手順は下記のとおりです。
➀画像を格納するフィールドのデータ型を 添付ファイル に設定します。
➁テーブルを開くとフィールドにクリップのマークが入っています。
クリップマークをダブルクリックし、「添付ファイルの管理」を選択します。
➂「追加」ボタンをクリックするとファイル選択画面が表示されます。
テーブルに格納したい画像を選択します。
➃画像が格納されると、クリップマークの右側に格納した画像の数に応じた数字が表示されます。
一つずつファイルを選択する必要があるため少し手間がかかりますが、簡単に画像を格納することができます!
テーブルに画像を格納する(VBA)
手動での画像格納手順をマクロで実行してみます!
【実行内容】
「リスト」テーブルの「画像」フィールドに画像を格納していきます。
今回は、1レコード目に「1.png」の画像を保存、2レコード目に「2.png」の画像を保存...
となるようにマクロを動かしていきます。
VBAは下記のとおりです。
Sub ImageInsert_Click()
Dim dbs As database
Dim rst As Object
Dim rsA As Object
Dim PictFld As Object
Dim strFile As String
Dim strPath As String: strPath = <画像が格納されているフォルダパス>
Dim strPattern As String: strPattern = "*.png"
Dim i As Integer: i = 1
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("リスト")
Set PictFld = rst("画像")
'「リスト」テーブルの1レコード目から順に処理を行う'
Do Until rst.EOF
'「画像」フィールドのレコードセットを取得する'
Set rsA = PictFld.Value
'名前が"i"の画像を取得'
strFile = Dir(strPath & "\" & i & strPattern)
rst.Edit
'対象の画像がある場合は、画像を格納'
If strFile <> "" Then
rsA.AddNew
rsA("FileData").LoadFromFile strPath & "\" & strFile
rsA.Update
End If
i = i + 1
rsA.Close
rst.Update
rst.MoveNext
Loop
rst.Close
dbs.Close
Set fld = Nothing
Set rsA = Nothing
Set rst = Nothing
Set dbs = Nothing
MsgBox "画像の格納が完了しました"
End Sub
マクロの結果としては前出の「Accessで画像を使うとは」に載せているテーブルを作成することができます。
フォームで画像を表示する
テーブルに画像を格納できたら、今度はフォームで画像を使ってみましょう!
レコードの情報を表示し、ボタンで表示するレコード情報を切り替えていくようなフォームを用意しました。
画像をフォームに表示する設定は下記のとおりです。
➀フォームを作成し、レコードソースとして作成したテーブルを設定する。
今回は「リスト」テーブルに画像を格納したため、リストを選択する。
➁リボンのフォームデザインから「添付ファイル」をフォーム上に配置する。
➂設置した「添付ファイル」オブジェクトを選択し、コントロールに画像を格納したフィールドを選択する。
今回は「画像」フィールドに格納したため、画像を選択する。
上記のようにファームを設定すると、前出の「Accessで画像を使うとは」に載せているフォームのように画像を表示させることができます。
【豆知識】テーブルのデータ型について
今回は画像を格納するフィールドのデータ型を 添付ファイル型 としましたが
他にも OLEオブジェクト型 が存在します。
それぞれの違いとしては
■添付ファイル型
Access2007以降に追加されたデータ型
すべての種類のドキュメントとバイナリファイルを格納できる
また、1レコードに複数の添付ファイルを格納することが可能
■OLEオブジェクト
Access2007以前からあるデータ型
環境によってはフォームで画像を表示できない場合がある
.accdbファイル形式では 添付ファイル型 を使用した方が無難かと思います!
↓Microsoftの参考URLです。
使用が推奨される Access ファイル形式
感想・まとめ
AccessのVBAで画像を使用したことがなかったのでVBA作成に手こずってしまいましたが、
フォームに画像を載せるのはとても簡単にできました!
使用する画像情報の管理(ファイル名の設定など)は手がかかりそうですが、
それさえ準備できれば使用するのはそこまで難易度は高くなさそうです。
また、個人的に懸念していたファイル容量も「添付ファイル型」では
自動的に画像が圧縮されるためそこまで大きくならなそうです。
(今回は元の画像データが合計約3MBで、作成したAccessは約4MBでした)
とはいえ、Accessの容量上限は2GBなので、格納する画像の数が多い場合は検討が必要そうですね。
今回の記事に使用した画像は下記サイトからお借りしました。
ぱくたそ
ご案内
株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。
ご興味がある方は是非下記のリンクをご覧ください:
https://www.zdh.co.jp/products-services/cloud-data/zeuscloud/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_zeuscloud_content-area