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

Barcode VBA?

Forumthread: Barcode VBA?

Barcode VBA?
10.04.2025 21:50:43
JoeGe
Schönen guten Tag :)

Bin neu hier. Habe in der letzten Zeit meinen Job gewechselt und mehr mit dem PC zu tun. Habe auch schon ein paar Sachen über andere Programmiersprachen gesehen und soll jetzt eine Aufgabe bearbeiten. Verschiedene Barcodes werden in Excel gescannt, alle in Spalte A und beim Druck jeder einzelnen Zelle als Aufkleber, soll noch der jeweilige Code als barcode darunter angezeigt werden. Habe es jetzt erstmal mit 3 of 9 Barcode probiert, aber jetzt nicht die richtigen Formeln gefunden, um die Zahl direkt nochmal als Barcode darzustellen und dann mit dieser Schriftart an die jeweilige Zelle anzufügen. Also generell muss ich in A1 bspw beim scannen 123456789H stehen haben, was natürlich immer passt und als Umbruch darunter den barcode dazu, damit dies dann als A1 gedruckt werden kann. Kann mir jemand helfen, dies wahrscheinlich als VBA Code zu schreiben? Habe sogar schon die KI gefragt, aber diese Lösungen haben oft nur Fehlermeldungen, weil der Ausdruck bspw falsch ist oder ähnliches. Bin für jede Hilfe dankbar und wünsche eine schöne Woche.
Beste Grüße
Anzeige

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

Betreff
Datum
Anwender
Anzeige
Im Anhang habe...
10.04.2025 23:30:20
Case
Moin, :-)

... ich dir ein Beispiel erstellt: ;-)
https://www.herber.de/bbs/user/176691.xlsb

Einmal über Word (Button Barcode... A1 aktiviert lassen und Button klicken). ;-)

Und einmal über Zint (Button ZINT Barcode...):
https://sourceforge.net/projects/zint/

Den Button kannst du erst nutzen, wenn du das Tool geladen, entpackt und den Pfad im Code angepasst hast!

Das Teil ist sehr gut. Lässt sich auch über VBA steuern.

Servus
Case

Anzeige
Code 128 + QR-Code, ohne FONT
11.04.2025 12:23:57
MCO
Moin!

Hier ist der Code, den ich verwende um entsprechende Codes zu generieren. Es muss außer dem Office-Paket nix installiert werden, kein Add-In, keine Schriftart

Probiers mal aus:
Sub Barcode_test()


Code_Create Range("g9"), """" & Range("E6") & """ CODE128"
End Sub
Sub QR_TEST()


'ZielRange As Range, Feldinformation As String)
Code_Create Range("g9"), """" & Range("E6") & """ QR \q 3 \s 100 """
'QRCode_Edit ActiveSheet.Range("r9")
End Sub
Sub Code_Create(ZielRange As Range, Feldinformation As String)


Dim wdapp As Object
Dim WD As Object
'Abgeleitet aus https://www.ms-office-forum.net/forum/showthread.php?p=2055193
On Error Resume Next
Set wdapp = GetObject(, "Word.Application")
If wdapp Is Nothing Then Set wdapp = CreateObject("Word.Application")
'wdapp.Application.Visible = 1
Set WD = wdapp.Documents.Add

WD.Fields.Add(Range:=WD.Range, Type:=-1, text:="DISPLAYBARCODE " & Feldinformation, PreserveFormatting:=False).Copy
'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

wdapp.Quit 0
Set wdapp = Nothing
Set WD = Nothing

End Sub
Sub QRCode_Edit(ZielRange As Range)


For Each shp In ActiveSheet.Shapes
If shp.TopLeftCell.Address(0, 0) = ZielRange.Address(0, 0) Then Exit For
Next shp

With shp

'Am besten die gewünschten Änderungen aufzeichnen

' .LockAspectRatio = msoFalse
' .ScaleWidth 0.1651126718, msoFalse, msoScaleFromTopLeft
' .PictureFormat.Crop.PictureWidth = 454
' .PictureFormat.Crop.PictureHeight = 97
' .PictureFormat.Crop.PictureOffsetX = 189
' .PictureFormat.Crop.PictureOffsetY = 0
' .LockAspectRatio = msoFalse
' .IncrementTop 7.0587401575
'
' .ScaleHeight 0.7317079966, msoFalse, msoScaleFromTopLeft
' .PictureFormat.Crop.PictureWidth = 454
' .PictureFormat.Crop.PictureHeight = 97
' .PictureFormat.Crop.PictureOffsetX = 185
' .PictureFormat.Crop.PictureOffsetY = 8
'' 'Größe ändern
' .LockAspectRatio = msoTrue
' '.ScaleHeight 1.9, msoFalse, msoScaleFromTopLeft
End With
'Zentrieren
End Sub


Gruß, MCO
Anzeige
AW: Barcode VBA?
11.04.2025 16:23:58
UweD
Hallo

1)
Der Code 39 ist der einfachste Code, der sogar ohne zusätzliche Programme etc. angewendet werden kann.

Was du brauchst ist lediglich die entsprechende Schriftart (Code 39 oder Code 3of9)

- Angenommen dein Text steht in A1
- In A2 dann ="*" & A1 & "*" eintragen
- Die Zelle mit dem Code wird dann in der Code39Schriftart formatiert
- Ggf. noch mittig und in die Zeichengröße anpassen

- Fertig

2)
Code 128 z.B. ist kompakter als der 39er. Ist schmaler, bei gleichem Inhalt.
Dazu wird, neben der Code 128 Schriftart, aber Software gebraucht,

Ich nutze dazu VBA
Public Function Code128$(text$)

Dim x%, y%, fehlzeichen%, checksumme&
Dim Zeichensatz As Variant
Zeichensatz = Array("ß", "!", Chr(34), "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "", "=", ">", "?", "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "\", "]", "^", "_", "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~", "´", "ä", "ö", "ü", "Ä", "Ö", "Ü", "µ", "À", "Á", "Â", "È")
Code128$ = ""

'Die Maximallänge des Textes wird auf 40 Zeichen begrenzt, um fehlerhafte Scans zu vermeiden.
If (Len(text$) > 40) Then
x% = MsgBox("Der zu codierende Text ist " & Str(Len(text$) - 40) & " Zeichen zu lang." & Chr(13) & "Um Fehler beim Scannen des Barcodes zu vermeiden, ist dieses Makro auf 40 Zeichen begrenzt.", 64, "Barcode-Generator (Code 128)")
Exit Function
End If

'Wenn kein Text zu codieren ist, dann Funktion beenden.
If Len(text$) = 0 Then '(Len(text$) = 0 Or text$ = "0") Then
Exit Function
End If

'Testen, ob im Ausgangstext ein ß enthalten ist
If (InStr(text$, "ß") > 0) Then
x% = MsgBox("Das Zeichen ß kann nicht dargestellt werden.", 64, "Barcode-Generator (Code 128)")
Exit Function
End If

'Das Startzeichen hat den Wert 104
checksumme& = 104

'Leerzeichen durch ß ersetzen
text$ = Replace(text$, " ", "ß")


'Prüfziffer berechnen
For x% = 1 To Len(text$)
fehlzeichen% = 1
For y% = 0 To 94
If (Mid$(text$, x%, 1) = Zeichensatz(y%)) Then
fehlzeichen% = 0
checksumme& = checksumme& + (x% * y%)
Exit For
End If
Next y%
If fehlzeichen% = 1 Then
x% = MsgBox("Das Zeichen " & Mid$(text$, x%, 1) & " kann nicht dargestellt werden.", 64, "Barcode-Generator (Code 128)")
Exit Function
End If
Next x%

'Rest ermitteln
checksumme& = checksumme& Mod 103

'Ergebnis = Startzeichen + Text + Prüfziffer + Stoppzeichen
Code128$ = "Á" & text$ & Zeichensatz(checksumme&) & "È"
End Function

in ein Modul der entsprechenden Datei

Der Aufruf erfolgt dann so =code128(A1)

LG UweD
Anzeige
AW: Barcode VBA?
12.04.2025 01:40:36
JoeGe
Vielen Dank.

Verstehe ich ja grundsätzlich, nur wenn die Leute 20 Artikel in Spalte A scannen, kann ich ja nicht jeweils die Formel in der nächsten Zeile stehen haben. Selbst wenn ich die Formel in Spalte B packe und die Schrift ändere, druckt der Drucker hierbei nur jede Zelle einzeln. Also müsste ich es schaffen, den Barcode zusätzlich in A1 zur Nummer hinzuzufügen, damit der Drucker dies zusammen auf ein Label packt 😅aber da fällt mir dann nicht ein, wie das passen soll.
Anzeige
AW: Barcode VBA?
13.04.2025 13:14:04
ralf_b
ich hatte dir einen link zu einer Schriftart gepostet. Die Nummer wird dort unter den Strichcode gesetzt. In der selben Zelle. Das klingt für mich genau nach deinem Anwendungsfall.
AW: Barcode VBA?
14.04.2025 14:44:17
UweD
Hallo nochmal

Eine Möglichkeit noch (ohne die Makros)

Deine Scanns erfolgen in A2, A4, A6 ....


- Zentriere Spalte A
- In A1 diese Formel =WENN(A2>"";"*" &A2 &"*";"")
- A1 mit Code39 Schriftart versehen, Schriftgröße und Zeilenhöhen anpassen usw.

- A2 markieren und bei Zelle formatieren den Haken bei Schutz rausnehmen
- unter A2 einen Seitenumbruch einfügen, damit deine Aufkleber vereinzelt rauskommen

- Kopiere A1:A2 nach A3, A5 usw.
- ggf. weitere Seitenumbrüche setzen
- Druckbereich auf Spalte A begrenzen

- Rechtsclick auf den Tabellenblattreiter, Blatt schützen, dabei nur den 2. Haken bei "Entsperrte Zellen auswählen" drinlassen, OK,OK

jetzt kannst du nur noch A2, A4, A6 usw. anklicken.
D.h. wenn du in A2 startest und scannst, wird der Barcode in A1 sichtbar und die Zelle A4 für den nächsten Scan ist aktiviert...

Sieht dann so aus
Userbild


LG UweD
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige