94451
Goto Top

Excel, Bild als BASE64 in Zelle Speichern . Bild aus BASE64 in Shape darstellen

Hallo,

hier habe ich eine Lösung gefunden wie man ein Bild als BASE64 in einer Zelle Speichert...
http://stackoverflow.com/questions/2043393/convert-image-jpg-to-base64- ...

jetzt kommt die Frage, wie ich das Bild wieder zurückwandeln kann und in einen Shape anzeigen kann?

Public Function EncodeFile(strPicPath As String) As String
    Const adTypeBinary = 1          ' Binary file is encoded  

    ' Variables for encoding  
    Dim objXML
    Dim objDocElem

    ' Variable for reading binary picture  
    Dim objStream

    ' Open data stream from picture  
    Set objStream = CreateObject("ADODB.Stream")  
    objStream.Type = adTypeBinary
    objStream.Open
    objStream.LoadFromFile (strPicPath)

    ' Create XML Document object and root node  
    ' that will contain the data  
    Set objXML = CreateObject("MSXml2.DOMDocument")  
    Set objDocElem = objXML.createElement("Base64Data")  
    objDocElem.dataType = "bin.base64"  

    ' Set binary value  
    objDocElem.nodeTypedValue = objStream.Read()

    ' Get base64 value  
    EncodeFile = objDocElem.Text

    ' Clean all  
    Set objXML = Nothing
    Set objDocElem = Nothing
    Set objStream = Nothing

End Function

Wäre nett wenn jemand hier weiter weiß...

Kurz zu dem was ich vorhabe...
Ich habe eine Tabelle mit Informationen und unter anderem ein Bild... Diese Informationen will ich in einer Übersichtsseite Pro Zeile abbilden.
Dazu gehört auch immer ein Bild, das Bild speicher ich bereits jetzt erfolgreich in jeder Zeile als Base64-Code ab.

Vielen Dank

Content-Key: 295000

Url: https://administrator.de/contentid/295000

Printed on: April 19, 2024 at 07:04 o'clock

Mitglied: 114757
114757 Feb 03, 2016 at 10:08:30 (UTC)
Goto Top
Moin,
wieso der Umweg über Base64, wenn das doch direkt geht ?
Wie Artikeliste automatisch mit Bildern per Makro befüllen? In Mappe speichern nicht verknüpfen!

Gruß jodel32
Mitglied: 94451
94451 Feb 03, 2016 at 11:26:48 (UTC)
Goto Top
Zitat von @114757:

Moin,
wieso der Umweg über Base64, wenn das doch direkt geht ?
Wie Artikeliste automatisch mit Bildern per Makro befüllen? In Mappe speichern nicht verknüpfen!

Gruß jodel32

weil ich die die liste ebenso in eine Datenbank laden möchte... es handelt sich um eher "kleine" Bilder... aber trotzdem, will ich sie als Textzwischenspeichern um diese eben dann auch "anders" weiterzuverarbeiten (wie z.B. DB)...

Wenn das nicht geht, muss ich wohl sowas wie hier angeboten machen... aber "Interessanter" wäre die andere Lösung...
Mitglied: 114757
Solution 114757 Feb 03, 2016 updated at 12:05:26 (UTC)
Goto Top
Wenn das nicht geht, muss ich wohl sowas wie hier angeboten machen... aber "Interessanter" wäre die andere Lösung...
Einfach aus dem Base64 Encoded Stream wieder eine Bilddatei schreiben und dann als Shape laden.
Wie man ein Shape lädt kannst du aus obigen Thread entnehmen, hier das essentielle zum dekodieren der Daten und schreiben einer Bilddatei mit den Daten:
Zeile 1 und 2 anpassen ...
base64Decoded = decodeBase64("HIER DEIN BASE64 STRING==")  
writeBytes "C:\Ordner\Zieldatei.jpg", base64Decoded  
  
private function decodeBase64(base64)
  dim DM, EL
  Set DM = CreateObject("Microsoft.XMLDOM")  
  Set EL = DM.createElement("tmp")  
  EL.DataType = "bin.base64"  
  EL.Text = base64
  decodeBase64 = EL.NodeTypedValue
end function
  
private Sub writeBytes(file, bytes)
  Dim binaryStream
  Set binaryStream = CreateObject("ADODB.Stream")  
  binaryStream.Type = 1
  binaryStream.Open
  binaryStream.Write bytes
  binaryStream.SaveToFile file, 2
End Sub