2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Microsoft Access】テーブルに画像を格納して、フォームで表示する

Last updated at Posted at 2024-05-07

はじめに

今までMicrosoft Access(以下、Access)で画像の格納や表示をしたことがなかったのですが、
画像を使用したAccessツールを使用する機会があったので使用方法をまとめてみました!

Accessで画像を使うとは

Accessでは画像をデータとしてテーブルに格納することができます。

操作1.gif

保存したデータは下記のようにフォーム上で表示させることができます。

操作2.gif

テーブルに画像を格納する(手動)

テーブルに画像を格納する手順は下記のとおりです。

➀画像を格納するフィールドのデータ型を 添付ファイル に設定します。
image.png

➁テーブルを開くとフィールドにクリップのマークが入っています。
 クリップマークをダブルクリックし、「添付ファイルの管理」を選択します。
image.png

➂「追加」ボタンをクリックするとファイル選択画面が表示されます。
 テーブルに格納したい画像を選択します。
image.png

➃画像が格納されると、クリップマークの右側に格納した画像の数に応じた数字が表示されます。



一つずつファイルを選択する必要があるため少し手間がかかりますが、簡単に画像を格納することができます!

テーブルに画像を格納する(VBA)

手動での画像格納手順をマクロで実行してみます!

【実行内容】
「リスト」テーブルの「画像」フィールドに画像を格納していきます。
今回は、1レコード目に「1.png」の画像を保存、2レコード目に「2.png」の画像を保存...
となるようにマクロを動かしていきます。

VBAは下記のとおりです。

Access 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で画像を使うとは」に載せているテーブルを作成することができます。

フォームで画像を表示する

テーブルに画像を格納できたら、今度はフォームで画像を使ってみましょう!
レコードの情報を表示し、ボタンで表示するレコード情報を切り替えていくようなフォームを用意しました。

画像をフォームに表示する設定は下記のとおりです。

➀フォームを作成し、レコードソースとして作成したテーブルを設定する。
今回は「リスト」テーブルに画像を格納したため、リストを選択する。
image.png

➁リボンのフォームデザインから「添付ファイル」をフォーム上に配置する。
image.png

➂設置した「添付ファイル」オブジェクトを選択し、コントロールに画像を格納したフィールドを選択する。
今回は「画像」フィールドに格納したため、画像を選択する。
image.png

上記のようにファームを設定すると、前出の「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

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?