16.02.2025, 11:41 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2025, 11:41 von schauan.)
Hallöchen,
ich hätte da mal ein Problem
Ich möchte, wie im Betreff genannt, ein Bild aus einer Tabelle in ein Userform einfügen - direkt, ohne den Zwischenschritt des Speichern in eine Datei usw. Mit entsprechender API funktioniert das zuweilen, aber eben leider nicht immer.
In meinem Testfile habe ich ein Userform mit einem Image-Objekt. Der Code soll das Bild aus Tabelle1 nun in beides einfügen, am wichtigsten für mich ist eigentlich nur in das Image-Objekt. Nur zum Test hole ich es auch ins UF. Ich bekomme nun verschiedene Ergebnisse - im Prinzip alle möglichen Varianten.
Eingefügt wird bei mehrmaliger Ausführung:
nix oder ins UF oder ins Image oder in beides
Mein Wunsch wäre was "direkt" verlässliches
Das Problem scheint am Kopieren / Zwischenspeicher zu liegen - die Prüfung findet nix:
'Only Continue if we have a handle on the Picture If lPicHandle <> 0 Then
Edit: Das Problem scheint am Erzeugen des Bildes zu liegen - die folgende Prüfung findet was <> 0:
'Create the IPicture Object lOLEHandle = OleCreatePictureIndirect(uPictureInfo, uInterGUID, True, iTempPicture) If lOLEHandle = 0 Then ...
Ein Debug.Print lOLEHandle bringt -2147467259
Im Zwischenspeicher ist das Bild aber. Wenn ich als Ergebnis ein leeres UF bekomme und nach Schließen des UF mit CTRG-V einfüge, bekomme ich die Kopie ins Blatt. Ich hatte z.B. schon nach ...Copy... Sleep 500 drin, das brachte aber nix außer Verzögerungen ...
anbei umgebaut und angepasst. Die API Prozeduren sind nicht von mir. Da dies schon länger her ist, weiß ich nicht mehr wo ich diese damals ausgegraben hatte. Ich denke mal, dass ich diese Prozeduren irgendwo aus einem der englischen Foren für brauchbar befunden hatte.
16.02.2025, 15:59 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2025, 16:00 von schauan.)
Hallo Uwe,
vielen Dank für die Lösung. Ich hatte bisher bei Bedarf die Methode mit dem Speichern als Datei genutzt, nicht zuletzt, weil das auch ab und an erforderlich war. Ich konnte mich dunkel erinnern, mal was in der Richtung Zwischenablage gelesen zu haben, hatte gegoogelt und bei den ersten Trefferseiten was im excelforum.com gefunden.
Nachdem ich Deine Lösung probiert hatte, habe ich, was ich sonst anderen Fragestellern empfehle, im Beispielbereich nachgeschaut. Da gibt es eine Lösung von Volti: Thread-Bild-aus-Zwischenablage-in-Userform-Image-einfuegen Leider funktioniert die Verlinkung auf diesen Beitrag in einem Beitrag nicht, da klemmt sich unser Wortfilter dagegen Muss ich mal schauen, welche Schraube ich da noch drehen kann.
Schönen Rest-Sonntag noch,
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
16.02.2025, 20:43 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2025, 20:43 von volti.)
Hallo André,
vorab: die Lösung von snb ist die einfachste, weil man direkt das Handle hat. Erfordert aber ein Imageobjekt und wenn man das nicht hat oder will, wird es nix.
Ich setzte meinen Code, ich denke mal den, den ich da eingestellt habe (die Welt geht ja irgendwie auch weiter), schon seit langem ein. Funktioniert bisher fehlerfrei. Den Umweg über die Dateiauslagerung gehe ich ungern. Zu diesem Thema kommen ja recht oft Fragen in den Foren auf, z.B. auch im Herberforum.
Der Code in Uwes Datei scheint mir das gleiche Prinzip zu sein.
Gruß Karl-Heinz
Folgende(r) 1 Nutzer sagt Danke an volti für diesen Beitrag:1 Nutzer sagt Danke an volti für diesen Beitrag 28 • schauan
Ich hätte da noch einen zweiten Fall mit "internen" Objekten. Wenn ich z.B. ein Chart (oder einen Bereich) als Bild kopiere und einfüge, oder eine eingefügte Form nehmen will, klappt das nicht Da würde ich bei dem Code von Uwe oder Volti bleiben, oder gibt es da auch was einfacheres?
@volti,
Zitat:Erfordert aber ein Imageobjekt und wenn man das nicht hat oder will, wird es nix.
jupp, ich gehe mal davon aus, dass das das Problem mit den "internen" beschreibt
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
ja, das mit den Diagrammen ist auch so ein leidiges Thema. Ich hatte u.a. ein Projekt von 1997 bis 2020 betreut, wo das für automatisierte Berechnungen in Abwesenheit der Benutzer angewendet wurde. Da wurde ein Bereich kopiert, temporär in ein Chart eingefügt und selbiges als Grafik gespeichert
Da hatte ich von einer Windows/Office-Version zur nächsten immer mehr Probleme - nicht nur mit dem Kopieren. Wo das anfangs als Prozess ohne Anmeldung mit Excel im Hintergrund ging (WNT / O97), musste ich zum Schluss unter W10 / O2010 mit einer Pseudoanmeldung und Excel im Vordergrund arbeiten. Excel minimiert oder im Hintergrund führte dazu, dass die exportierten Bilder weiß blieben...
OK, das Projekt ist seit 2020 tod. Mein zweitältestes läuft seit 2007, und läuft, und läuft - wie lange doch manche Projekte leben Hat zum Glück mit Bildern nix zu tun.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)