所見入力システムの前身では、mdbからWindowsのアクセサリのペイントを呼び出してシェーマとか書いてたんですよね。
でもこれ、Accessのランタイムでは動かないという…。
それさえなければランタイムでも問題なかっただけに、残念なことでした…。
ちなみに、イメージをダブルクリックしてペイントを呼び出すVBAのコードはこちら。
イメージが2つある環境でのコードになります。
なお、Cドライブのルートにblank.bmpという、イメージと同サイズの白紙のbmpを置く仕様です。
最初に「検査ID+_番号.bmp」という名前でBMPファイルを作成し、それをペイントで編集してます。
image_IPは保存先のマシンのIPです。

こちらはimage1をダブルクリックした時の関数。


Private Sub image1_DblClick(Cancel As Integer)

    Dim img_src As String

    img_src = CStr(Me.exam_ID) & "_1.bmp"

    If Me.exam_status < 3 Then
        If Me.image1.Picture = "c:\blank.bmp" Then
            FileCopy "c:\blank.bmp", image_IP & "\image\" & img_src
            Shell "mspaint.exe " & image_IP & "\image\" & img_src, vbNormalFocus
        Else
            Shell "mspaint.exe " & image_IP & "\image\" & img_src, vbNormalFocus
        End If
    End If
End Sub

保存した画像をイメージに反映するコードはこちら。


Private Function set_picture()
    '書いた(書かれている)シェーマをフォームに反映させる関数。
    Dim img_src As String
    Dim img_no As Integer
    img_no = 1
    Do While img_no < 3
        
        img_src = CStr(Me.exam_ID) & "_" & CStr(img_no) & ".bmp"
    
        If Dir(image_IP & "\image$\" & img_src) <> "" Then
            Select Case img_no
            Case 1
               Me.image1.Picture = image_IP & "\image$\" & img_src
            Case 2
                Me.image2.Picture = image_IP & "\image$\" & img_src
            End Select
        Else
            Select Case img_no
            Case 1
                Me.image1.Picture = "C:\blank.bmp"
            Case 2
                Me.image2.Picture = "C:\blank.bmp"
            End Select
        End If
        img_no = img_no + 1
    Loop
    
End Function