त्रुटि कुछ हद तक आत्म-व्याख्यात्मक है:माइक्रोसॉफ्ट एक्सेस में एक छवि नियंत्रण या तो फ़ाइल स्थान से जुड़ा हो सकता है, या .dib
पर सेट किया जा सकता है छवि (डिवाइस स्वतंत्र बिटमैप प्रारूप
, अधिक अस्पष्ट छवि प्रारूपों में से एक)।
हालांकि, इसके आसपास काम करना इतना आसान नहीं है।
आप उस सीमा के आसपास कई तरह से काम कर सकते हैं:
- ऐसे ActiveX नियंत्रण का उपयोग करें जो एकाधिक छवि प्रारूपों का समर्थन करता है (इसमें अनेक पाए जा सकते हैं)
- छवि को एक अस्थायी फ़ोल्डर में डिस्क पर सहेजें, और छवियों के नियंत्रण स्रोत को उसके स्थान पर सेट करें
- वेब ब्राउज़र नियंत्रण का उपयोग करें, और HTML
<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
फिर, हम एक वेब ब्राउज़र नियंत्रण का उपयोग कर सकते हैं, और इसमें BASE64-एन्कोडेड छवि के साथ एक वेब पेज सम्मिलित कर सकते हैं:
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
आपकी छवि का प्रकार है, और MyOLEObject
आपका OLE ऑब्जेक्ट है।
टिप्स:
- WebBrowser ActiveX नियंत्रण का उपयोग न करें, लेकिन एक्सेस के साथ आने वाले नियंत्रण का उपयोग करें। अन्यथा, आपको इंटरनेट एक्सप्लोरर का एक पुराना संस्करण मिलेगा जिसकी 3डी सीमा होगी जिसे हटाया नहीं जा सकता।
- वेब ब्राउज़र नियंत्रण के लिए नियंत्रण स्रोत को
="about:blank"
. पर सेट करें इसे एक रिक्त पृष्ठ के रूप में प्रारंभ करने के लिए