
94451
19.09.2016
Bilder vom LDAP in VBA - Excel
Hallo,
ich mache über VBA einen Abruf vom LDAP um die eine Userliste vom Unternehmen zu ziehen...
mit:
hole ich mir den User und mir
z.B. seinen Usernamen...
jetzt möchte ich aber auch die Bilder haben.
1. Welchen Parameter hat das Bildfeld?
2. Wie kann ich die in einer Zelle / als String speichern (geht da was mit base64 wenn ja wie)
3. Wie kann ich die in einem Form als Bild anzeigen
Ich arbeite mit Office 2013 (soll aber auch 2016 tauglich sein).
@129813: so besser?
Vielen Dank
ich mache über VBA einen Abruf vom LDAP um die eine Userliste vom Unternehmen zu ziehen...
mit:
Set oUser = GetObject(objRecordSet.Fields("aDSPath"))
hole ich mir den User und mir
oUser.sAMAccountName
z.B. seinen Usernamen...
jetzt möchte ich aber auch die Bilder haben.
1. Welchen Parameter hat das Bildfeld?
2. Wie kann ich die in einer Zelle / als String speichern (geht da was mit base64 wenn ja wie)
3. Wie kann ich die in einem Form als Bild anzeigen
Ich arbeite mit Office 2013 (soll aber auch 2016 tauglich sein).
@129813: so besser?
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 315643
Url: https://administrator.de/forum/bilder-vom-ldap-in-vba-excel-315643.html
Ausgedruckt am: 22.04.2025 um 17:04 Uhr
3 Kommentare
Neuester Kommentar
Moin.
Kein Problem, das Bild ist ein ByteArray und ist in der Eigenschaft thumbnailPhoto hinterlegt, hiermit schreibst du das Bild in eine Datei und kannst es dann in Excel mit den bekannten Methoden (ActiveSheet.Shapes.AddPicture(....) )einfügen.
Grüße Uwe
p.s. die Powershell-Variante kannst du in deinem letzten Thread nachlesen
Kein Problem, das Bild ist ein ByteArray und ist in der Eigenschaft thumbnailPhoto hinterlegt, hiermit schreibst du das Bild in eine Datei und kannst es dann in Excel mit den bekannten Methoden (ActiveSheet.Shapes.AddPicture(....) )einfügen.
Sub WriteBytes(file, bytes)
Dim objStream
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 1
objStream.Open
objStream.Write bytes
objStream.SaveToFile file, 2
End Sub
Set oUser = GetObject(objRecordSet.Fields("aDSPath"))
WriteBytes "C:\photo.png", oUser.thumbnailPhoto
p.s. die Powershell-Variante kannst du in deinem letzten Thread nachlesen
Zitat von @94451:
jetzt nur die Frage, gibt es eine Möglichkeit die Bytes nicht auf einem Laufwerk als Datei abzulegen sondern direkt als "String" in Zellen???
Ja, z.B. als Base64 kodierter String, hier die Funktion dazu:jetzt nur die Frage, gibt es eine Möglichkeit die Bytes nicht auf einem Laufwerk als Datei abzulegen sondern direkt als "String" in Zellen???
Function EncodeBase64(bytes)
dim objDOM, objEL
Set objDOM = CreateObject("Microsoft.XMLDOM")
Set objEL = objDOM.createElement("temp")
objEL.DataType = "bin.base64"
objEL.NodeTypedValue = bytes
encodeBase64 = objEL.Text
End Function
und die darauffolgende Frage wäre dann wie kann ich dann in einer Form diesen "String" wieder als Bild umkonvertieren?
Zurück in Bytes einfach Base64 umgekehrt ins ByteArray konvertieren und wie oben wegschreiben Function DecodeBase64(base64)
dim objDOM, objEL
Set objDOM = CreateObject("Microsoft.XMLDOM")
Set objEL = objDOM.createElement("temp")
objEL.DataType = "bin.base64"
objEL.Text = base64
decodeBase64 = objEL.NodeTypedValue
End Function
Wie du Bilder in Excel hinzufügst/direkt als Bild einbettest habe ich oben schon geschrieben (ActiveSheet.Shapes.AddPicture(...)), alternativ ein Image-Object auf einer Form platzieren und das temporär erzeugte Bild in das Image-Objekt laden (Image1.Picture = LoadPicture("C:\photo.png")).
Les dir einfach die Doku dazu durch, dann ist das alles kein Hexenwerk, ein bißchen APIs lesen sollte absolut machbar sein.