Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Prüfen, ob Bild geladen wurde

Forumthread: Prüfen, ob Bild geladen wurde

Prüfen, ob Bild geladen wurde
19.10.2025 20:21:56
Michael P.
Hallo zusammen,

meine Frau und ich machen in unserem Verein zusammen die Abrechnung mit Excel. Um es den Mitgliedern einfach zu machen, die Rechnung zu bezahlen, füge ich per


=BILD("https://api.qrserver.com/v1/create-qr-code/?data="&R52&"";"";3;150;150)


einen QR-Code ein.

Wenn ich nun die Rechnungen drucke, ändert sich der QR-Code jedes mal, da für jedes Mitglied andere Summen zusammen kommen. Manchmal läd dieser Code aber nicht schnell genug, bis das Makro per printout die Rechnung ausdruckt (und das trotz einer Sekunde Wartezeit) und es erscheint auf der Rechnung ein Platzhalter. Um dies zu vermeiden, würde ich gerne im Makro abfragen, ob die Grafik geladen wurde, oder eben warten, bis das geschehen ist.

Gibt es also eine Möglichkeit, den Status der Grafik abzufragen?

MfG
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen, ob Bild geladen wurde
20.10.2025 11:52:46
schauan
1)
Bilder bitte hier hochladen
2)
erhöhe die Wartezeit
3)
wie wartest Du eigentlich? Falls mit Application,wait, nimm stattdessen die Sleep-API !
4)
wie erzeugst Du eigentlich den Code bzw. wie holst Du ihn in die Datei? Oder anders gesagt, poste mal eine Beispieldatei oder zumindest den Code
Anzeige
AW: Prüfen, ob Bild geladen wurde
20.10.2025 13:02:07
Michael P.
Ich habs jetzt anders gelöst, dazu am Ende. Kurz zu deinen Fragen:

1. Bild wird dynamisch erzeugt, daher kein Bild hochgeladen.
2. Wartezeit war manchmal trotz 10 sek zu kurz oder es hat wegen was anderem nicht funktioniert
3. ja, war mit Application.wait
4. Wie in der Frage beschrieben, wurde der Inhalt des QR-Codes in eine Zelle geschrieben und diese dann als Daten in die URL eingefügt. bei jeder änderung der Mitgliedsnummer wurde dann der Inhalt der "Daten-Zelle" angepasst und damit auch der QR-Code, der sich daraufhin neu geladen hat.

Nun zu meiner Lösung:

Ich habe mit Hilfe von KI folgende Funktion gebaut:


Sub InsertQRCode()
Dim ws As Worksheet
Dim qrData As String
Dim qrUrl As String
Dim localPath As String
Dim http As Object
Dim stream As Object
Dim shp As Shape
Dim targetCell As Range

' --- Einstellungen ---
Set ws = ActiveSheet ' ggf. anpassen, z. B. Sheets("Druckblatt")
Set targetCell = ws.Range("K52")
qrData = ws.Range("R52").Value
localPath = Environ("TEMP") & "\qrcode.png"

' --- Prüfen, ob QR-Text vorhanden ist ---
If Trim(qrData) = "" Then
MsgBox "Zelle R52 ist leer – kein QR-Code erstellt.", vbExclamation
Exit Sub
End If

' --- QR-Code-URL generieren ---
qrUrl = "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" & WorksheetFunction.EncodeURL(qrData)


' --- QR-Code abrufen ---
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", qrUrl, False
http.Send

If http.Status > 200 Then
MsgBox "QR-Code konnte nicht geladen werden. HTTP-Status: " & http.Status, vbCritical
Exit Sub
End If

' --- QR-Code speichern ---
Set stream = CreateObject("ADODB.Stream")
stream.Type = 1 ' Binär
stream.Open
stream.Write http.responseBody
stream.SaveToFile localPath, 2 ' overwrite
stream.Close

' --- Vorherige QR-Bilder entfernen ---
On Error Resume Next
ws.Shapes("QRCode_K52").Delete
On Error GoTo 0

' --- Bild korrekt einfügen ---
Set shp = ws.Shapes.AddPicture(Filename:=localPath, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=targetCell.Left, _
Top:=targetCell.Top, _
Width:=100, _
Height:=100)

shp.Name = "QRCode_K52"

' --- Sichtbarkeit sicherstellen ---
shp.Visible = msoTrue
shp.LockAspectRatio = msoFalse

' --- Bild im Zellbereich fixieren ---
shp.Placement = xlMoveAndSize
End Sub


Diese Sub läd nun das Bild vom API-Server in meinen Temp-Ordner herunter und fügt es anschließend ein. So ist sicher gerstellt, dass der QR-Code auch vorhanden ist, wenn die Datei gedruckt werden soll...

Diesen code führe ich nun jedes mal über ein Worksheet-Change aus, wenn die Mitgliedsnummer sich ändert. Habe es nun mehrere Male ohne printout laufen lassen und es funktioniert. Das Worksheet_Change hat auch den Vorteil, dass ich mir bei der manuellen Durchsicht der Rechnungen den QR-Code ansehen und mit meiner Banking-App testen kann...

Trotzdem danke...
Anzeige
AW: Prüfen, ob Bild geladen wurde
20.10.2025 23:18:56
Oppawinni
Der Code steht doch da, es ist die Formel
=BILD("https://api.qrserver.com/v1/create-qr-code/?data="&R52&"";"";3;150;150)
Die wird aber bei dir nicht so einfach funktionieren, wen du in R52 nichts stehen hast.
probier das mal mit:
=BILD("https://api.qrserver.com/v1/create-qr-code/?data="&"TEST"&"";"";3;150;150)
und ich weiß nicht, ob da nicht vielleicht das eine oder andere DoEvents hilfreich sein könnte,
oder auch Screenupdating zeitweise inaktiv zu setzen.
Dazu müsste man die Anwendung genauer kennen.


Anzeige
AW: Prüfen, ob Bild geladen wurde
20.10.2025 23:27:15
schauan
... der code funktioniert doch einwandfrei ;-)
AW: Bitte?
21.10.2025 00:14:24
Oppawinni
Was willst du mir damit sagen?
Dass die Formel für sich ganz gut funktioniert?
Ja, das ist so, aber irgendetwas an dem Makro das da herum gebaut ist, schien ja die Aktualisierung zu behindern.
AW: Bitte?
21.10.2025 10:50:37
schauan
... der TE schreibt doch in #3

Ich habs jetzt anders gelöst,

...

Nun zu meiner Lösung:
Ich habe mit Hilfe von KI folgende Funktion gebaut:


... (der funktionierende code)

Diese Sub läd nun das Bild vom API-Server in meinen Temp-Ordner herunter und fügt es anschließend ein. So ist sicher gerstellt, dass der QR-Code auch vorhanden ist, wenn die Datei gedruckt werden soll...

Diesen code führe ich nun jedes mal über ein Worksheet-Change aus, wenn die Mitgliedsnummer sich ändert. Habe es nun mehrere Male ohne printout laufen lassen und es funktioniert. Das Worksheet_Change hat auch den Vorteil, dass ich mir bei der manuellen Durchsicht der Rechnungen den QR-Code ansehen und mit meiner Banking-App testen kann...


...

Scheint also, dass es - zumindest ohne printout - passt, was ja eigentlich der Grund für die Frage hier war. :-) Aber wenn er schreibt, das damit sicher gestellt ist ....
Ohne den nicht funktionierenden code zu kennen sind unsere Lösungsansätze halt' nur Spekulatius :-(

Aber es ist auf jeden Fall dankenswert, dass der TE die Lösung gepostet und sich trotzdem bedankt hat, also, Michael, dankeschön dafür :-)
Leider gibt es ja viele Fragesteller, die das nicht tun ...
Anzeige
AW: Bitte?
21.10.2025 14:50:45
Oppawinni
anders gelöst bedeutet halt, dass die Problemursache nicht identifiziert wurde.
Ohne den Code konnte man da freilich auch nicht viel mehr tun, als spekulieren.
Ja, ok, schön dass er wenigstens Rückmeldung gibt, wobei das eigentlich selbstverständlich sein sollte.
Es gibt aber halt leider auch Leute die hier eine Frage posten und sich dann nie wieder melden.
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18