Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1520to1524
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 für Excel, einfach und gratis

QR-Code für Excel, einfach und gratis
22.10.2016 16:46:53
Heliophob
Hallo zusammen,
mein Wunsch war es einen QR-Code (mit einem Link zu Google-Maps) in einer Excel-Tabelle zu generieren. Beim Druck soll der QR-Code automatisch generiert werden und mir das Leben etwas leichter machen. Derartige Plugins habe ich einige gefunden. Diese waren jedoch alle kostenpflichtig (Einzellizenz um die 200 EUR). Es geht auch ohne! Viel einfacherer als erwartet...! Für die Nachwelt möchte ich hier die Lösung festhalten...
Als Grundlage dient das Programm Zint [1]. Zum einen ist dies OpenSource (GNU-Licence) und zum anderen kommt es in doppelter Ausführung daher: Die grafische Variante (die wir nicht brauchen) und die Variante für die Befehlszeile (toll!). Ein Hoch an den Entwickler! Über die Befehlszeile lassen sich alle relevanten Daten per Excel-VBA an Zint übertragen und Zint erstellt daraus eine Grafik die man später (automatisch) in Excel importieren kann.
Zuerst sollte Zint an eine "gut zu erreichende" Stelle gelegt werden. In meinem Fall c:/zint/. Dies war bei mir besser, da es sonst möglicherweise Probleme mit langen Verzeichnisnamen und Leerzeichen geben kann.
Dann habe ich in meiner Excel-Tabelle Image-Steuerelement eingebaut. Dieses kann von Haus aus leider kein png! Zint kann aber auch gif - man muss einfach nur als Dateiname eine gif-Endung nennen und schon wird eine gif erstellt.
Im VBA-Editor erstelle ich dann folgenden Source:
Public Sub QRCode()
Dim x 'Befehlszeile
Dim datei As String 'Bilddatei
Dim URL As String 'URL die aus einer Zelle geholt wird
' Zelle mit der URL die ich als Link im QR-Code haben will.
' z.B: http://maps. _
google.de/maps?q=Fackenburger+Allee+11+23554+Lübeck
URL = Range("A1").Value
datei = "c:\Zint\temp.gif" 'Temporäre Bilddatei
' Details siehe Anleitung von Zint. 58 ist der Code zum erstellen eines QR-Codes.
' Es gehen auch praktisch fast alle anderen...
' Das Exit am Ende bewirkt, dass das CMD-Fenster sich wieder von selbst schließt.
x = Shell("cmd /k c:\Zint\zint -o " + datei + " -b 58 --vers=1 -d" + URL + "&& exit")
' wartet 0,8 Sekunden (Verarbeitungszeit von Zint mit Reserve-Zeit)
Application.Wait Now + TimeSerial(0, 0, 0.8)
' Image1 ist der Name vom Image-Steuerelement
Sheets("Druck").Image1.Picture = LoadPicture(datei)
' löscht die Temporäre Datei wieder
Kill datei
End Sub

Viel Spaß beim testen!
Janko Hack
[1] https://sourceforge.net/projects/zint/

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: QR-Code für Excel, einfach und gratis
22.10.2016 18:00:56
Michael
Hi Janko,
ich weiß zwar nicht, ob und wann ich's brauche... Aber: hast Du mal getestet, ob der QR-Code dann auch geht?
Ich könnte mir vorstellen, daß das "ü" aus Lübeck Schwierigkeiten macht, weil die Kommandozeile einen anderen Zeichensatz hat als Excel.
Evtl. müßte man Umlaute (und evtl. ein ß) maskieren durch "ue" oder "ss".
Schöne Grüße,
Michael
AW: QR-Code für Excel, einfach und gratis
22.10.2016 18:23:11
Heliophob
Hallo Michael,
ja, Du liegst richtig. Die Sonderzeichen gehen verstümmelt durch. In meinem Fall ist das nicht aufgefallen, weil Google-Maps das von selbst korrigiert hat. Im Zweifel muss man eben die Umlaute replacen - aber auch kein Drama.
Beste Grüße
Janko
Anzeige
AW: QR-Code für Excel, einfach und gratis
22.10.2016 18:25:08
Heliophob
Hab da gerade auch das passende gefunden :-)
https://dbwiki.net/wiki/VBA_Tipp:_Umlaute_ersetzen
AW: QR-Code für Excel, einfach und gratis
22.10.2016 18:28:35
Michael
Hi Janko,
aha! Ist klar kein Drama, aber wissen muß man es.
In der Praxis wird es wohl eher darum gehen, eigene QR-Codes zu erstellen: dann hat man ja sowieso die Kontrolle...
Also: danke.
Gute Zeit,
Michael
AW: QR-Code für Excel, einfach und gratis
22.10.2016 19:16:34
Heliophob
Das geht besser zum konvertieren:
Public Function Umlaut(S)
S = Replace(S, "ü", "ue")
S = Replace(S, "ä", "ae")
S = Replace(S, "ö", "oe")
S = Replace(S, "Ü", "Ue")
S = Replace(S, "Ä", "Ae")
S = Replace(S, "Ö", "Oe")
S = Replace(S, "ß", "ss")
Umlaut = S
End Function

Anzeige
AW: QR-Code für Excel, einfach und gratis
24.10.2016 23:41:52
Martin
Hallo Heliophob,
...und hier noch eine dritte Variante der Umlaut-Konvertierung:
Function Umlaute(strText As String)
Dim arrUml As Variant, i As Integer
arrUml = Array("ü", "ue", "ä", "ae", "ö", "oe", "Ü", "Ue", "Ä", "Ae", "Ö", "Oe", "ß", "ss")
For i = 0 To 13 Step 2
strText = Replace(strText, arrUml(i), arrUml(i + 1))
Next
Umlaute = strText
End Function
Viele Grüße
Martin
AW: QR-Code für Excel, einfach und gratis
26.10.2016 10:22:17
Heliophob
Änderungen:
- Es wird auf die Ausführung der Shell gewartet (kein sleep mehr)
- Umlaute (öäüÖÄÜß) werden für die URL nach UTF-8 kodiert.
Hier meine finale Version:
Public Function Umlaut(S)
'URL-Encode (UTF-8)
S = Replace(S, "ü", "%C3%BC")
S = Replace(S, "ä", "%C3%A4")
S = Replace(S, "ö", "%C3%B6")
S = Replace(S, "Ü", "%C3%9C")
S = Replace(S, "Ä", "%C3%84")
S = Replace(S, "Ö", "%C3%96")
S = Replace(S, "ß", "%C3%9F")
S = Replace(S, " ", "+")
Umlaut = S
End Function

Public Sub SartShell_Wait(cmdline$)
' Führt einen Shell-Befehl aus und *wartet* darauf, dass dieses fertig ist.
CreateObject("WScript.Shell").Run cmdline, 1, True
End Sub
Public Sub QRCode()
Dim x As String
Dim datei As String 'Bilddatei
Dim URL As String
URL = Umlaut(Range("A1").Value)
URL = "http://maps.google.de/maps?q=" + URL
datei = "c:\Zint\1.gif"
x = "cmd /k c:\Zint\zint -o " + datei + " -b 58 --vers=1 -d" + URL + "&& exit"
Call SartShell_Wait(x)
Sheets("Druck").Image1.Picture = LoadPicture(datei)
Kill datei
End Sub

Anzeige

26 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige