Ich habe folgendes Problem unter Word 2013 bzw. Word 2019 (unabhängig von Betriebssystem):
Ich berechne Mittels VBA den Barcode in Form von Code 128 mit der folgenden Funktion:
Public Function GenerateCode128B(SourceStruing As String)
Dim checkDigitValue As Integer
Dim barcodeString As String
Dim startSign As String
Dim endSign As String
Dim index As Integer
Dim c As Integer
checkDigitValue = 104
startSign = Chr(204)
endSign = Chr(206)
index = 1
barcodeString = startSign
For c = 1 To Len(SourceString) Step 1
Dim currentSign As String
currentSign = Asc(Mid(SourceString, c, 1))
If Asc(currentSign) < 32 Or Asc(currentSign) > 126 Then
GenerateCode128B = Empty
Else
barcodeString = barcodeString & Mid(SourceString, c, 1)
checkDigitValue = checkDigitValue + (Asc(currentSign) - 32) * index
index = index + 1
End If
Next
checkDigitValue = checkDigitValue Mod 103
If checkDigitValue > 94 Then
checkDigitValue = checkDigitValue + 100
Else
checkDigitValue = checkDigitValue + 32
End If
barcodeString = barcodeString & Chr(checkDigitValue) & endSign
GenerateCode128B = barcodeString
End Function
Eigentlich eine Standardfunktion, die man so auch im Netz wiederfindet. Funktioniert auch. Bspw. für "ABC12DEF456G" berechnet sich richtigerweise "ÌABC12DEF456FNÎ". Diesen berechneten String füge ich nun wie folgt ins Word-Dokument ein:
Selection.Font = "Code 128"
Selection.TypeTest GenerateCode128B("ABC12DEF456G")
Verwendet wird/ werden soll die Schriftart code128.ttf (siehe z. B. hier: https://www.dafont.com/de/code-128.font).
Nun zu meinem Probelm:
Wird die Scheriftart nicht verwendet, landet im Dokument der übersetzte Barcode, aber eben noch ohne Strichode, also korrekt "ÌABC12DEF456FNÎ". Unter Verwendung der installierten Schriftart ist das Ergebnis aber falsch und sieht leider so aus: "???G???G12???456????G?".
Der Barcode ist also viel zu lang und irgendwie scheinen jetzt die Buchstaben aus dem Griechischen zu kommen.
Hat irgendwer eine Idee, woran das liegen kann? Es sollte doch möglich sein, bei dem Barcode einfach nur die Schriftart zu ersetzen, damit das funktioniert, oder? Besteht der Barcode übrigens nur aus Zahlen, funktioniert es.
|