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?
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
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
3 Antworten
- LÖSUNG 114757 schreibt am 03.02.2016 um 11:08:30 Uhr
- LÖSUNG 94451 schreibt am 03.02.2016 um 12:26:48 Uhr
- LÖSUNG 114757 schreibt am 03.02.2016 um 12:43:36 Uhr
- LÖSUNG 94451 schreibt am 03.02.2016 um 12:26:48 Uhr
LÖSUNG 03.02.2016 um 11:08 Uhr
Moin,
wieso der Umweg über Base64, wenn das doch direkt geht ?
https://www.administrator.de/forum/artikeliste-automatisch-bildern-makro ...
Gruß jodel32
wieso der Umweg über Base64, wenn das doch direkt geht ?
https://www.administrator.de/forum/artikeliste-automatisch-bildern-makro ...
Gruß jodel32
LÖSUNG 03.02.2016 um 12:26 Uhr
Zitat von @114757:
Moin,
wieso der Umweg über Base64, wenn das doch direkt geht ?
https://www.administrator.de/forum/artikeliste-automatisch-bildern-makro ...
Gruß jodel32
Moin,
wieso der Umweg über Base64, wenn das doch direkt geht ?
https://www.administrator.de/forum/artikeliste-automatisch-bildern-makro ...
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...
LÖSUNG 03.02.2016, aktualisiert um 13:05 Uhr
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