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

EPC GiroCode per VBA

Forumthread: EPC GiroCode per VBA

EPC GiroCode per VBA
21.07.2022 20:58:18
Lilli
Hallo Ihr lieben,
ich bräuchte bitte Hilfe beim Erstellen eines EPC bzw. GiroCode per VBA. Ich weiß nicht welche notwendigen Daten bereitgestellt werden, aber das würde ich in eine Zeile oder untereinander vorbereiten und ich bräuchte dafür ein Makro, der daraus ein QR Barcode für die Bank erstellt.
Hat jemand vielleicht eine Idee, wo man sowas bekommt bzw. wie man sowas macht?
ich freue mich über jede Hilfe.
vielen Dank im Voraus.
liebe Grüße,
Lilli :)
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: EPC GiroCode per VBA
22.07.2022 10:41:37
Yal
Hallo Lilli,
es ist mir wohl sehr langweilig, dass ich auch noch die Internet-Recherche erledige. Aber ok: das Thema ist nicht ganz uninteressant. Endlich mal was neues.
Aus https://de.wikipedia.org/wiki/EPC-QR-Code erfährt man was in diesem QR einkodiert werden soll.
Aus https://vbatrainer.de/qr-code/ bekommt man eine einfache VBA, um ein QR zu erezugen. Nicht toll, weil es über Google geht und somit Bankdaten ins Internet verstreut... Man kann auch den Teufel überall sehen.
beide zusammen ergibt folgendes:

Sub QR_erzeugen()
Dim QR_String As String
If ActiveSheet.Range("Betrag") = 0 Then MsgBox "Betrag darf nicht null sein!": Exit Sub
QR_String = "BCD" & vbLf & "002" & vbLf & "2" & vbLf & "SCT"
QR_String = QR_String & vbLf & ActiveSheet.Range("BIC")
QR_String = QR_String & vbLf & ActiveSheet.Range("Name")
QR_String = QR_String & vbLf & ActiveSheet.Range("IBAN")
QR_String = QR_String & vbLf & "EUR" & Replace(Format(ActiveSheet.Range("Betrag"), "0.00"), ",", ".")
QR_String = QR_String & vbLf & ActiveSheet.Range("zweck")
QRCode QR_String
End Sub
Function QRCode(QRCode_Wert As String) As String
'Variablen deklarieren
Dim sURL As String
Dim rngCell As Range
'Zelle auslesen
Set rngCell = ActiveCell
'URL definieren
sURL = "https://chart.googleapis.com/chart?cht=qr&&chs=100x100&&chl=" & QRCode_Wert
'Alten QR-Code löschen, falls vorhanden
On Error Resume Next
ActiveSheet.Pictures("QRCode_" & rngCell.Address).Delete
On Error GoTo 0
'QR-Code einfügen
With ActiveSheet.Pictures.Insert(sURL)
.Name = "QRCode_" & rngCell.Address
.Left = rngCell.Left + 5
.Top = rngCell.Top + 5
.Width = .Width * 1.5
.Height = .Height * 1.5
End With
'Bereitgestellt von VBATrainer: www.vbatrainer.de
End Function
Ich benutze benannte Zellen, um das gesamt zu vereinfachen. Das wirst Du sicher umkrempeln können.
Wenn Du einige Test machen möchtest, kann ich Dir gern mit IBAN zur Verfügung stellen ;-)
VG
Yal
Anzeige
AW: EPC GiroCode per VBA
22.07.2022 17:45:32
Lilli
Hallo Yal,
ich habe schon Schwester Google gefragt, allerdings habe ich Deine Antworten nicht bekommen. Ich habe nur eingegeben: Excel vba GiroCode erstellen.
Vielleicht fehlt mir einfach das Wissen, wie man besser sucht. Und ich habe die Erfahrung gemacht, dass bei gleichen Anfragen unterschiedliche Ergebnisse Google liefert.
Ich würde gerne das Angebot in Anspruch nehmen und würde gerne testen. Darf ich Dich bitten mir dies mit IBAN zur Verfügung zu stellen?
Vielen Dank für Deine Mühe, ich werde es testen.
muss ich BIC belegen, wenn ich nur für Deutschland Überweisung mache?
vielen Dank für Deine Mühe.
liebe Grüße,
Lilli :)
Anzeige
QR-Code ohne Google
22.07.2022 11:33:11
Yal
Neue Version ohne Google dazwischen, über die QR-Code Funktion von Word.
Danke an "Flotte Feger" in https://www.ms-office-forum.net/forum/showthread.php?p=2055193

Sub GiroCode_erzeugen()
Dim QR_String As String
If ActiveSheet.Range("Betrag") = 0 Then MsgBox "Betrag darf nicht null sein!": Exit Sub
QR_String = "BCD" & vbLf & "002" & vbLf & "2" & vbLf & "SCT"
QR_String = QR_String & vbLf & ActiveSheet.Range("BIC")
QR_String = QR_String & vbLf & ActiveSheet.Range("Name")
QR_String = QR_String & vbLf & ActiveSheet.Range("IBAN")
QR_String = QR_String & vbLf & "EUR" & Replace(Format(ActiveSheet.Range("Betrag"), "0.00"), ",", ".")
QR_String = QR_String & vbLf & ActiveSheet.Range("zweck")
QRCode_Create Worksheets("Tabelle1").Range("F5"), QR_String
End Sub
Sub QRCode_Create(ZielRange As Range, Text As String)
Dim WA As New Word.Application
Dim WD As New Word.Document
'Abgeleitet aus https://www.ms-office-forum.net/forum/showthread.php?p=2055193
WD.Fields.Add(Range:=WD.Range, Type:=-1, Text:="DISPLAYBARCODE " & Chr(34) & CStr(Text) & Chr(34) & " QR \q 3 \s 100 ", PreserveFormatting:=False).Copy
ZielRange.Select
ZielRange.Parent.PasteSpecial Format:="Picture (JPEG)", Link:=False, DisplayAsIcon:=False
Set WD = Nothing
Set WA = Nothing
End Sub
Anscheinend hat diese QR-Code weiterhin eine Problem mit dem Feld "Zweck" (zumindest in meinem KSK-App).
VG
Yal
Anzeige
Notwendige Ergänzung!
22.07.2022 11:36:19
Yal
um Word.Application und Word.Document zu verweden, muss man "Microsoft Word 16.0 Object Library" einbinden.
In VB-Editor, "Extras", "Verweise..." den Eintrag finden und anhaken.
VG
Yal
AW: Notwendige Ergänzung!
22.07.2022 17:56:27
Lilli
Hallo Yal,
ich habe den Verweis angeschaut, das war eingehackt. Das habe ich aber nur bei Excel angeschaut. Muss ich das auch bei Word machen?
Liebe Grüße,
Lilli :)
Anzeige
Gefunden: Zweck
22.07.2022 11:45:21
Yal
es muss wohl gemäss Wikipedia 3 Zeilen bis zur Verwendungzwecks dazwischen sein:
QR_String = QR_String & vbLf & vbLf & vbLf & ActiveSheet.Range("zweck")
VG
Yal
Word bleibt offen
22.07.2022 17:36:31
Yal
Noch ein paar Bereinigungen... zum Beispiel das Word-Dokument, das offen bleibt.

Sub QR_erzeugen()
Dim QR_String As String
If ActiveSheet.Range("Betrag") = 0 Then MsgBox "Betrag darf nicht null sein!": Exit Sub
QR_String = "BCD" & vbLf & "002" & vbLf & "2" & vbLf & "SCT"
QR_String = QR_String & vbLf & ActiveSheet.Range("BIC")
QR_String = QR_String & vbLf & ActiveSheet.Range("Name")
QR_String = QR_String & vbLf & ActiveSheet.Range("IBAN")
QR_String = QR_String & vbLf & "EUR" & Replace(Format(ActiveSheet.Range("Betrag"), "0.00"), ",", ".")
QR_String = QR_String & vbLf & vbLf & vbLf & ActiveSheet.Range("zweck")
QRCode_Create2 Worksheets("Tabelle1").Range("F5"), QR_String
End Sub
Sub QRCode_Create(ZielRange As Range, Text As String)
Dim WD As New Word.Document
'Abgeleitet aus https://www.ms-office-forum.net/forum/showthread.php?p=2055193
WD.Fields.Add(Range:=WD.Range, Type:=-1, Text:="DISPLAYBARCODE " & Chr(34) & CStr(Text) & Chr(34) & " QR \q 3 \s 100 ", PreserveFormatting:=False).Copy
ZielRange.Select
ZielRange.Parent.PasteSpecial Format:="Picture (JPEG)", Link:=False, DisplayAsIcon:=False
WD.Close False
End Sub
VG
Yal
Anzeige
AW: QR-Code ohne Google
22.07.2022 17:52:35
Lilli
Hallo Yal,
wenn ich die Tabelle habe und dann auf dem Reiter "Code anzeigen" auswähle, lege ich dann den Code in der Tabelle oder muss ich ein Modul öffnen und darein tun?
Wie hast Du bitte die Daten eingepflegt? untereinander oder nebeneinander?
Wie erkennt das Programm die grünmarkierten Felder in der Tabelle?
ich bin analphabet, was vba angeht. :)
viele Grüße,
Lilli
Anzeige
AW: QR-Code ohne Google
22.07.2022 20:12:10
Yal
Hallo Lilli,
viele Fragen...
Googeln:
nicht nach "Excel vba GiroCode", es ist zu spezifisch (obwohl jetzt wird diese Thread gefunden. In ein paar Tage).
Ich habe "GiroCode" und Wiki gefunden, dann "VBA QR Code" und nach ein paar Seiten den vbatrainer-Link, später den ms-Forum-Beitrag gefunden.
Dann die beiden zusammengefügt
Extras, Verweise:
es passiert alles in Excel. Von Word wird nur Standardfunktionalität verwendet und dort läuft kein code. Dort nichts zu ändern.
Mein IBAN:
war ein Scherz :-) ich poste keine persönlich Informationen im Netz. Am besten testest Du mit eigener IBAN (so habe ich in meinem KSK-App gemacht)
ohne BIC:
in Version 002 darf es ohne BIC sein. Dafür die Zeile vor Name leer lassen, in dem vbLf zweimal vorkommt:

    QR_String = "BCD" & vbLf & "002" & vbLf & "2" & vbLf & "SCT"
QR_String = QR_String & vbLf & vbLf & ActiveSheet.Range("Name")
QR_String = QR_String & vbLf & ActiveSheet.Range("IBAN")
QR_String = QR_String & vbLf & "EUR" & Replace(Format(ActiveSheet.Range("Betrag"), "0.00"), ",", ".")
QR_String = QR_String & vbLf & ActiveSheet.Range("zweck")
Im Arbeitsblatt-Codepane oder Module:
in dem Fall spielt es keine Rolle. Im Code wird auf ActiveSheet verwiesen.
Daten untereinander oder nebeneinander?
Ich habe jede einzelne Zelle eine Name gegeben, z.B. "IBAN". Somit kann ich auf ActiveSheet.Range("IBAN") zugreifen. Wichtig ist nicht, wo die Daten gelesen werden, sondern wie diese in QR_String zusammengesetzt werden. Also mit vbLF getrennt.
Wie erkennt das Programm die grünmarkierten Felder in der Tabelle?
das ist eine "menschorientierte" Gestaltung deiner Anwendung. Zum programmieren, viel zu unstabil.
Idealerweise hast Du die Empfängername in einer Spalte, den IBAN in eine andere, usw. Alles auf eine Zeile. Dann kann man auf der Zeile der "aktive Zelle" und die passende Spalte zugreifen.
"ich bin analphabet, was vba angeht. :)"
So ging es mir auch vor 20 Jahren. Tipp: immer Makro-Rekorder verwenden, und schauen, was für ein Code dabei rauskommt.
Ein Fehler habe ich letzten Beitrag gemacht: ein Testversion "2"
QRCode_Create2 Worksheets("Tabelle1").Range("F5"), QR_String
muss in
QRCode_Create Worksheets("Tabelle1").Range("F5"), QR_String
gewandelt werden.
VG
Yal
Anzeige
AW: QR-Code ohne Google
24.07.2022 03:49:30
Lilli
Hallo Yal,
ich bekomme folgende Fehlermeldung:
Fehler beim Kompilieren:
Benutzerdefinierten Typ nicht definiert.
Diese Zeile wird dann markiert.
Sub QRCode_Create(ZielRange As Range, Text As String)
vielen Dank, liebe Grüße Lilli
AW: QR-Code ohne Google
24.07.2022 13:04:20
Yal
Hallo Lilli,
ein Typ ist was als 4tes Wort einer Variablendeklaration vorkommt:
Dim meinStringVar As String
String ist der Typ der Variable meinStringVar.
Diese Fehlermeldungen deutet darauf hin, dass Du die externe Bibliothek "Microsoft Word 16.0 Object Library " nicht angebunden hast, weil diese in der "QRCode_Create" bei den Dims gefragt wird.
VG
Yal
Anzeige
AW: QR-Code ohne Google
25.07.2022 14:00:19
Lilli
Hallo Yal,
ich habe es eingebunden. Das war tatsächlich noch nicht eingebunden. Aber es kommt leider den gleichen Fehlermeldung. Ich habe auch alles geschlossen und neu gestartet. Das hat leider auch nicht geholfen.
hast Du vielleicht eine Idee, was es noch sein könnte?
vielen Dank und liebe Grüße, Lilli
Anzeige
AW: QR-Code ohne Google
25.07.2022 14:48:22
Yal
Hallo Lilli,
wenn Du die Library angebunden hast, musst Du dein Excel speichern. Sonst geht es wieder verloren.
Du kannst anstatt diese frühe Anbindung (Extras, Verweise...), die man "Early Binding" nennt, auch einen "Late Binding" verwenden:

Sub QRCode_Create(ZielRange As Range, Text As String)
Dim WA As Object
Dim WD As Object
'Abgeleitet aus https://www.ms-office-forum.net/forum/showthread.php?p=2055193
Set WA = CreateObject("Word.Application")
Set WD = WA.Documents.Add
WD.Fields.Add(Range:=WD.Range, Type:=-1, Text:="DISPLAYBARCODE " & Chr(34) & CStr(Text) & Chr(34) & " QR \q 3 \s 100 ", PreserveFormatting:=False).Copy
ZielRange.Select
ZielRange.Parent.PasteSpecial Format:="Picture (JPEG)", Link:=False, DisplayAsIcon:=False
WD.Close False
End Sub
Die Variablen WA und WD wird untypisiert deklariert und bei der Instanzierung mit einem Objekt von Typ Word.Application bestückt.
Da der "Pfad" der Objekt-Vorlage (="Objekt-Klasse") für das Word.Document nicht bekannt ist (ich geh nicht ins Detail), muss man zuerst eine "Word.Application"-Objekt instanzieren und daraus einen Document-Objekt erzeugen.
Ich finde es weniger "schön". Ich bevorzüge immer Early Binding.
VG
Yal
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

EPC GiroCode mit VBA erstellen


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Daten: Stelle sicher, dass Du die erforderlichen Daten wie Betrag, BIC, IBAN, Name und Verwendungszweck hast. Organisiere diese in benannten Zellen in Deiner Excel-Tabelle.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Modul erstellen: Klicke im Menü auf "Einfügen" und wähle "Modul", um ein neues Modul zu erstellen.

  4. VBA-Code einfügen: Kopiere den folgenden Code und füge ihn in das Modul ein:

    Sub QR_erzeugen()
       Dim QR_String As String
       If ActiveSheet.Range("Betrag") = 0 Then MsgBox "Betrag darf nicht null sein!": Exit Sub
       QR_String = "BCD" & vbLf & "002" & vbLf & "2" & vbLf & "SCT"
       QR_String = QR_String & vbLf & ActiveSheet.Range("BIC")
       QR_String = QR_String & vbLf & ActiveSheet.Range("Name")
       QR_String = QR_String & vbLf & ActiveSheet.Range("IBAN")
       QR_String = QR_String & vbLf & "EUR" & Replace(Format(ActiveSheet.Range("Betrag"), "0.00"), ",", ".")
       QR_String = QR_String & vbLf & vbLf & vbLf & ActiveSheet.Range("zweck")
       QRCode_Create Worksheets("Tabelle1").Range("F5"), QR_String
    End Sub
    
    Sub QRCode_Create(ZielRange As Range, Text As String)
       Dim WD As New Word.Document
       WD.Fields.Add(Range:=WD.Range, Type:=-1, Text:="DISPLAYBARCODE " & Chr(34) & CStr(Text) & Chr(34) & " QR \q 3 \s 100 ", PreserveFormatting:=False).Copy
       ZielRange.Select
       ZielRange.Parent.PasteSpecial Format:="Picture (JPEG)", Link:=False, DisplayAsIcon:=False
       WD.Close False
    End Sub
  5. Bibliothek hinzufügen: Stelle sicher, dass die "Microsoft Word 16.0 Object Library" verbunden ist. Gehe zu "Extras" > "Verweise..." und aktiviere den Eintrag.

  6. Makro ausführen: Schließe den VBA-Editor und kehre zu Excel zurück. Führe das Makro über ALT + F8 aus.

  7. QR-Code prüfen: Der QR-Code sollte im definierten Bereich (z. B. F5) erscheinen.


Häufige Fehler und Lösungen

  • Fehler: Benutzerdefinierter Typ nicht definiert
    Dies kann passieren, wenn die Microsoft Word-Bibliothek nicht eingebunden ist. Gehe zu "Extras" > "Verweise..." und aktiviere die Bibliothek.

  • Fehler: Betrag darf nicht null sein
    Stelle sicher, dass der Betrag in der entsprechenden Zelle eingegeben ist.

  • QR-Code wird nicht erstellt
    Überprüfe, ob alle benannten Zellen korrekt definiert sind und ob die Informationen vollständig sind.


Alternative Methoden

  1. QR-Code ohne Internet: Verwende die Word-Funktion, um QR-Codes direkt aus Excel zu erstellen, ohne dass eine Internetverbindung erforderlich ist. Der Code dafür findest Du in den vorherigen Antworten.

  2. QR-Code-Generatoren: Nutze kostenlose Online-Generatoren, um QR-Codes zu erstellen und diese in Excel einzufügen.

  3. Excel QR-Code Generator Template: Verwende Vorlagen, die bereits die Funktionen zur Erstellung von QR-Codes integriert haben.


Praktische Beispiele

Hier ist ein Beispiel für die Verwendung des VBA-Codes:

  • Angenommen, Du hast in den Zellen A1 bis E1 die folgenden Daten:
    • A1: Betrag
    • B1: BIC
    • C1: Name
    • D1: IBAN
    • E1: Zweck

Wenn Du das Makro ausführst, wird ein QR-Code erstellt, der alle diese Informationen enthält.


Tipps für Profis

  • Daten validieren: Bevor Du den QR-Code generierst, validiere die Eingabedaten, um sicherzustellen, dass sie korrekt formatiert sind.

  • Fehlerbehandlung einbauen: Füge Fehlerbehandlungsroutinen in Deinen VBA-Code ein, um mögliche Probleme beim Ausführen des Codes zu identifizieren und zu beheben.

  • Automatisierung: Überlege, wie Du den Prozess automatisieren kannst, indem Du Trigger wie das Ändern von Zellen verwendest, um den QR-Code automatisch zu aktualisieren.


FAQ: Häufige Fragen

1. Muss ich BIC belegen, wenn ich nur für Deutschland Überweisungen mache?
In der Version 002 ist es möglich, ohne BIC zu arbeiten. Lasse die Zeile vor dem Namen leer, um dies zu erreichen.

2. Wie kann ich den QR-Code in eine andere Zelle einfügen?
Ändere den Zielbereich in der Zeile QRCode_Create Worksheets("Tabelle1").Range("F5"), QR_String auf die gewünschte Zelle.

3. Welche Excel-Version wird benötigt?
Der beschriebenen Prozess sollte in den meisten modernen Excel-Versionen funktionieren, insbesondere in Excel 2013 oder später.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige