Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

QR-Code mittels Public Function einfügen

QR-Code mittels Public Function einfügen
02.11.2021 20:46:43
Norbert
Hallo liebe Excel-Profis,
zur Erläuterung meines Problems kurz folgender Hintergrund:
Ich möchte gerne meinen Rechnungen einen Grafik-QR-Bezahlcode hinzufügen.
Dazu habe ich mir folgende Tabelle als Vorlage eingerichtet:
https://www.herber.de/bbs/user/148917.xlsm
Für die, die nicht gern Dateien mit Makros runterladen, hier auch noch mal eine kurze Erläuterung:
Die Angaben zu Empfänger, IBAN, BIC, Betrag und Verwendungszweck sind in der Beispielstabelle in den Zellen D2 bis D6 eingetragen. In einer weiteren Zelle (im vorliegenden Beispiel in B2) habe ich eine benutzerdefinierte Funktion eingefügt, die der Funktion die Werte der besagten Zellen in D2 bis D6 als Argumente übergibt. Die Ausgestaltung als Funktion ist mir wichtig, da ich möchte, dass das Ganze bei jeder Änderung dieser Angaben neu berechnet und eine neue QR-Grafik erzeugt wird.
Den Code des Moduls füge ich untern nochmal an.
Ich habe jetzt folgendes Problem:
Alles klappt wurderbar, nur die letzte Zeile mit dem PasteSpecial-Befehl bewirkt einfach nichts, keine Fehlermeldung, aber auch nicht das Einfügen der Grafik.
Was nun kurios ist: Wenn ich die besagte Befehlszeile nach Durchlauf der Funktion händisch über das Sub starte, wird die Grafik eingefügt. Aber nur bei händischem Starten, ein automatisierter Aufruf am Ende der Funktion bewirk wieder nichts!
Hier noch einmal der Code des entsprechenden Moduls:
Option Explicit
Const BarcodeWidth As Integer = 92 'Breite des QR-Codefensters

Public Function pf_QRCode(Empfänger As String, IBAN As String, BIC As String, Betrag As String, Verwendungszweck As String) As String
Dim BarcodeText As String, wdapp As Word.Application
BarcodeText = ufunc_Sonderzeichen("bank://singlepaymentsepa?name=" & Empfänger & "&reason=" & Verwendungszweck & "&iban=" & IBAN & "&bic=" & BIC & "&amount=" & Betrag)
BarcodeText = "DISPLAYBARCODE '" & BarcodeText & "' QR \s 50 \q 3"
pf_QRCode = BarcodeText
'   Den Klartext in QR-Grafik umwandeln
Set wdapp = CreateObject("Word.Application")
With wdapp.Documents.Add
.Fields.Add(Range:=.Range, Type:=-1, Text:=BarcodeText, PreserveFormatting:=False).Copy
.Close savechanges:=False
End With
wdapp.Quit: Set wdapp = Nothing
ActiveSheet.PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False, DisplayAsIcon:=False
End Function

Private Function ufunc_Sonderzeichen(UmzuwandelnderText As String) As String
UmzuwandelnderText = Replace(UmzuwandelnderText, " ", "%20")
UmzuwandelnderText = Replace(UmzuwandelnderText, ",", "%2C")
ufunc_Sonderzeichen = UmzuwandelnderText
End Function

Private Sub usub_QR_Grafik()
ActiveSheet.PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False, DisplayAsIcon:=False
End Sub
Viele Grüße aus der Lüneburger Heide!
Norbert

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: QR-Code mittels Public Function einfügen
02.11.2021 21:58:19
onur
Eine benutzerdefinierte Funktion, die du als Excel-Funktion benutzen willst, kann nur die Zelle manipulieren, in der sie steht (wie jede andere Excel-Funktion auch) . sie kann weder andere Zellen manipulieren noch irgendwas irgendwo einfügen o.Ä. .
AW: QR-Code mittels Public Function einfügen
02.11.2021 22:45:32
Norbert
Hallo onur,
vielen Dank für die schnelle Antwort, die mir eine echte Hilfe bei weiteren Überlegungen ist.. Zumindest kann die Funktion ja außerhalb von Excel etwas bewirken, denn sie erzeugt ja ein Word-Dokument, fügt diesem ein Feld mit der Grafik zu und kopiert das in die Zwischenablage. In die Richtung werde ich weiter überlegen. Vielleicht erstelle ich neben der Excel Tabelle noch ein eigenständiges Dokument, das ich dann mit der Funktion nur noch öffne und manipuliere (Feld hinzufügen mit Grafik) und dem ich dann einen Code verpasse, der dann aus der Word-Welt wieder in die Excel-Welt hineinwirkt. Das wäre ein bisschen von hinten durchs Knie ins Auge,aber schauen wir mal.
Viele Grüße
Norbert
Anzeige
AW: QR-Code mittels Public Function einfügen
02.11.2021 22:52:04
ralf_b
du kannst in worksheet_change Event prüfen welche Zelle geändert wurde und bei einer Übereinstimmung ein Makro aufrufen.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 2 Then Call insertPic(Target.Value, Target)
End Sub
'dieses Makro in ein allgemeines Modul
'ist jetzt nicht das Schönste aber bei mir funktioniert es.
Sub insertPic(sText As String, r As Range)
Dim wdapp As Word.Application
Dim shp As Shape
Set wdapp = CreateObject("Word.Application")
With wdapp.Documents.Add
.Fields.Add Range:=.Range, Type:=-1, Text:=sText, PreserveFormatting:=False
.Fields.ToggleShowCodes
.Fields(1).Select
.Fields(1).Copy
r.Offset(2).Select
ThisWorkbook.ActiveSheet.PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False, DisplayAsIcon:=False
Set shp = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
With shp
.TopLeftCell = r.Top + r.Height
End With
r.Select
.Close savechanges:=False
End With
wdapp.Quit: Set wdapp = Nothing
End Sub

Anzeige
AW: QR-Code mittels Public Function einfügen
03.11.2021 05:46:51
onur
Du könntest aus der Funktion eine Sub machen, die du automatisch aufrufen lässt, sobald in D2 bis D6 was geändert wird.
AW: QR-Code mittels Public Function einfügen
03.11.2021 07:59:52
Norbert
Danke für den Tipp. Ein Problem ist nur, dass ich die Einträge in den Zellen D5 und D6 bzgl. Betrag und Verwendungszweck in meiner "richtigen" Rechnung nicht direkt in die Zellen D5 und D6 eingebe, sondern dass diese ihrerseits auch berechnet werden. Und eine automatische Neuberechnung löst das Change-Ereignis ja leider nicht aus. Aber irgendwas wird mir schon einfallen...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige