Microsoft Access 掲示板

外部の画像をレポートに表示したい

6 コメント
views
4 フォロー

社内で名札を着用しております。
その名札に持っている資格(10数種類あります)の
マークを印刷したく考えております。

人によっては数種類の資格を持っている人がいるため
その人の名札には数種類のマークが印刷されるイメージです。
(マークの配置は左から順番に取得資格のみ印刷される)

色々な情報を頼りに以下コード作成してみましたところ、
現時点で問題点が2点発生しました。

まずは、ActiveX コントロールの Microsoft Forms 2.0 Imageを
レポートに配置し、

   DoCmd.OpenReport ReportName:="レポート名"
          , View:=acViewPreview

          , OpenArgs:="\test\image\pic1.bmp"

というように OpenArgs で画像のパスを渡し、
レポート側では
Format時イベントではなく(開く時)イベントで

'--------------------------------------------------------------------------
Private Sub Report_Open(Cancel As Integer)
  If LenB(Me.OpenArgs) Then
    Me.Image1.Picture = Access.Application.LoadPicture(Me.OpenArgs)
  End If
End Sub

 ここで、「実行時エラー'438' オブジェクトは、このプロパティまたは
 メソッドをサポートしていません」と表示されます。(問題点①)

仮に問題点①が発生しない場合、この場合一つしか資格のマークが表示されない
コードになっていますが、複数の場合、取得資格のみを左から順番に
レポート表示はどうしたらよいのでしょうか?(問題点②)

知恵を貸していただきたくお願い致します。

kitty
作成: 2020/01/20 (月) 11:08:33
通報 ...
1
hatena 2020/01/20 (月) 12:02:07 修正

Accessのバージョンは何でしょうか。
AC2007以降なら、イメージコントロールのコントロールソースプロパティに画像パスを設定することで簡単に表示させることができます。

下記の「画像ファイル名のみ格納してイメージコントロールで表示する方法」の項目を参照ください。
帳票フォームでの説明になってますが、レポートでもまったく同じ方法で使用できます。

AC2007以降の帳票フォームで画像表示
AC2003以前は画像の取り扱いはなかなか大変でした。OLEオブジェクト型に画像データを格納すれば、帳票フォームでも簡単に表示できて便利なんですが、Jpegなどの圧縮ファイルでも展開された状態で格納されるので、データベースファイルが肥大化したり、OLEサーバーに対応した画像処理ソフトが必要だったり、といろいろ問題点も抱えています。 そこで、ファイル名をテーブルに格納して、VBAでイメージコントロールにファイルパス...
fc2

2
kitty 2020/01/20 (月) 13:44:11 e4054@a3086

hatena様
お返事ありがとうございます。
アクセスのバージョンは2000です。

レポート印刷のイメージは画像のとおりです。
(資格3種類、1名×2種類の場合)

バージョン替えて作り替えるよりこのまま進めたいのですが
何か良い方法がありましたらアドバイスいただけましたら幸いです。

画像1

3

詳細セクションにイメージコントロールを配置して、VBAでイメージコントロールのPictureプロパティに画像のパスを設定します。レコード毎に変更したいので、フォーマット時のイベントプロシージャに記述します。

下記のような感じのコードになります。(フィールド名などは適当ですので適宜変更してください。)

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
    Dim ImgPath As String
    Select Case Me.資格コード
    Case 1
        ImgPath = "C:\test\image\pic1.bmp"
    Case 2
        ImgPath = "C:\test\image\pic2.bmp"
    Case 3
        ImgPath = "C:\test\image\pic3.bmp"
    End Select
    Me.イメージコントロール.Picture = ImgPath
End Sub
4
kitty 2020/01/21 (火) 08:19:17 e4054@a3086

hatena様
ご丁寧にありがとうございます。

ご連絡を待っている間、2010形式で作り替えてみたところ、
2000で作っていたDAOが機能しませんでした。
ネットで調べたところ、Win10 64ビットのためかDAOの参照設定が無効になっていたため
Microsoft office 16.0 Access Database・・・を参照設定するようにと記載がありましたのでチェックを入れたところ、「DLL読み込み時のエラーです」とエラーがでます。

これはどうしたらよろしいでしょうか?
今後のために教えていただきたくお願い致します。

5

「DLL読み込み時のエラーです」とエラーがでます。

Access(Office)をインストールするとき、Microsoft office 16.0 Access Database・・・ も同時にインストールされるはずなんですが、失敗しているのかもしれません。
Access(Office)をいったんアンインストールして、もう一度インストールしてみたら解決するかもしれません。

それでダメなら、Microsoft DAO 3.6 Object Liblary を参照設定してみてください。
DAOの古いバージョンですが、機能に差はないので問題なく使えるはずです。

6
kitty 2020/01/21 (火) 16:14:42 e4054@a3086

hatena様
ご連絡ありがとうございます。

アクセスのアンインストールやってみます。
それでもダメな場合の、Microsoft DAO 3.6 Object Liblaryの参照設定 ですが、
これは旧バージョンで使っていましたが、2010ではこれも「DLL読み込み時のエラーです」とエラー表示されます。

ご連絡待っている間、2010でDAO⇒ADOに変更しておりました。
そんなに複雑なプログラムではないのでADOに作り替えたほうが楽な気がしてきました。
昨日ご教授いただいた、AC2007以降の帳票フォームで画像表示も通常設定でできましたし。

とりあえずADOで進めてみたいと思います。
また何かありましたらよろしくお願いします。