このエラーは自明です。Microsoft Access のイメージ コントロールは、ファイルの場所にバインドされているか、.dib
に設定されている可能性があります。 画像 (デバイスに依存しないビットマップフォーマット
、あまり知られていない画像形式の 1 つです)。
ただし、これを回避するのはそれほど簡単ではありません。
この制限を回避するには、いくつかの方法があります:
<オール><img />
を使用します 埋め込み BASE64 画像
を使用して画像を表示するためのタグ アプローチ 3 のコード例は次のとおりです:
まず、OLE オブジェクトに含まれるバイナリ コードを BASE64 に変換できる必要があります:
Public Function ToBase64(Bytes As Variant) As String
Dim XMLElement As Object
Set XMLElement = CreateObject("Msxml2.DOMDocument.6.0").createElement("tmp")
XMLElement.DataType = "bin.base64"
XMLElement.nodeTypedValue = Bytes
ToBase64 = Replace(XMLElement.Text, vbLf, "")
End Function
次に、Web ブラウザー コントロールを使用して、BASE64 でエンコードされた画像を含む Web ページを挿入できます。
Public Sub InsertImageInControl()
Dim wb As Object
Set wb = MyWebbrowserControl.Object
With wb
.Navigate2 "about:blank"
Do Until .ReadyState = 4 '=READYSTATE_COMPLETE
'This is a somewhat inefficient way to wait, but loading a blank page should only take a couple of milliseconds
DoEvents
Loop
.Document.Open
.Document.Write "<!DOCTYPE html><HTML><HEAD><TITLE>A</TITLE></HEAD><BODY scroll=""no"" style=""margin: 0px; padding: 0px;"">"
.Document.Write "<img alt="""" style=""width:100%; margin: 0px; padding: 0px;"" src=""data:image/jpg;base64,"
.Document.Write ToBase64(MyOLEObject.Value)
.Document.Write """ />"
.Document.Write "</BODY></HTML>"
.Document.Close
End With
End Sub
どこ MyWebbrowserControl
image/jpg
は、Web ブラウザ コントロールの名前です。 は画像の種類で、MyOLEObject
は はあなたの OLE オブジェクトです。
ヒント:
- WebBrowser ActiveX コントロールは使用せず、Access に付属のコントロールを使用してください。そうしないと、削除できない 3D 境界線を持つ古いバージョンの Internet Explorer が表示されます。
- Web ブラウザ コントロールのコントロール ソースを
="about:blank"
に設定します 空白のページとして初期化する