Barcode generieren

Guten Tag,

Ich habe im Geschäft den Auftrag, mit Visual Basic Strichcode/Barcode zu generieren. Leider habe ich noch nie etwas codiert in diesem Bereich und habe deshalb keine Ahnung, wie ich beginnen soll.

Kennt jemand von euch ein Tutorial oder irgendwelche Codebeispiele? Wie kann man z.B. den Code39 generieren?

Bin für jeden Hinweis dankbar.

mfg
mario27

Ich habe im Geschäft den Auftrag, mit Visual Basic
Strichcode/Barcode zu generieren. Leider habe ich noch nie
etwas codiert in diesem Bereich und habe deshalb keine Ahnung,
wie ich beginnen soll.
Kennt jemand von euch ein Tutorial oder irgendwelche
Codebeispiele? Wie kann man z.B. den Code39 generieren?

Hi Mario,
vielleicht nützt dir das was:

http://groups.google.de/groups?lnk=hpsg&hl=de&q=FRE3…

Ich habe fre3of9.ttf und fre3of9x.ttf, warum auch immer gelang es mir nicht sie dir zu mailen bzw hochzuladen.
Melde dich wenn ich das nochmal probieren soll.
Gruß
Reinhard

Hallo Mario,

für Code39 gibt’s Fonts, da mußt Du nichts selbst basteln. Du mußt nur am Anfang und Ende einen Stern haben, sonst erkennt der Scanner den Code nicht.

Wenn Du es aber besser verstehen oder selbst skalieren, die Höhe der Balken verändern … willst, kann ich Dir ein selbstgeschriebenes Modul mailen, um den Code hier zu posten ist er zu lang.

Gruß, Rainer

Hallo Rainer,

Wenn Du es aber besser verstehen oder selbst skalieren, die
Höhe der Balken verändern … willst, kann ich Dir ein
selbstgeschriebenes Modul mailen, um den Code hier zu posten
ist er zu lang.

Ich wäre an dem Code interessiert.

Danke ^ Gruß
Reinhard

Hallo Reinhard,

Ich wäre an dem Code interessiert.

im Original geht es auch um VBA, das Modul läuft nicht, weil VBA ‚Line‘ nicht versteht. Ich bin gerade dabei das über die API zu umgehen. Mache ich es mir zu schwer? Gibt’s in VBA doch einen ‚Line‘-Befehl, den ich noch nicht gefunden habe? (.PSet würde auch gehen, habe ich aber auch nicht gefunden.) Wie ‚malt‘ man mit VBA per Programm eine Linie (in ein Image oder auf die Form)? Das kann doch nicht sein, daß ich das wirklich so machen muß, wie ich es gerade angefangen habe?

Gruß, Rainer

im Original geht es auch um VBA, das Modul läuft nicht, weil
VBA ‚Line‘ nicht versteht. Ich bin gerade dabei das über die
API zu umgehen. Mache ich es mir zu schwer? Gibt’s in VBA doch
einen ‚Line‘-Befehl, den ich noch nicht gefunden habe? (.PSet
würde auch gehen, habe ich aber auch nicht gefunden.) Wie
‚malt‘ man mit VBA per Programm eine Linie (in ein Image oder
auf die Form)? Das kann doch nicht sein, daß ich das wirklich
so machen muß, wie ich es gerade angefangen habe?

Hallo Rainer,

ich würde keine Linie nehmen sondern gleich ein Rechteck, anbei die beiden Codes.
Dummerweise läuft der untere nicht glatt weil es unten dazu kommt daß es 2 Rechtecke mit Namen „Weiß“ gibt, das mag der Editor nicht so, anscheinend doch nihct multi-fähig :smile:
Manuell kann man sehr wohl kopieren und einfügen, dann benennt er das neue Rechtck „Rectangle X“.
Zur Not muss ich den Programmaufbau umschreiben.
Die meisten Voreinstellungen des Rechtecks wie z.B Transparency kann man rauswerfen.

Sub tt()
Dim meinDokument
Set meinDokument = Worksheets(1)
 'BeginX, Beginy, EndX, EndY
With meinDokument.Shapes.AddLine(10, 10, 250, 250).Line
 .DashStyle = msoLineDashDotDot
 .ForeColor.RGB = RGB(50, 0, 128)
End With
End Sub

Sub ttt()
Dim R, Buchstabe, B
Buchstabe = "010011010100110101001101"
For Each R In ActiveSheet.Shapes
 If R.Name = "Schwarz" Or R.Name = "Weiß" Or R.Name Like "Rectangle\*" Then R.Delete
Next R ' left,top,widht,height
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 500, 200, 10, 100).Name = "Schwarz"
ActiveSheet.Shapes("Schwarz").Select
With Selection
 .ShapeRange.Fill.Visible = msoTrue
 .ShapeRange.Fill.Solid
 .ShapeRange.Fill.ForeColor.SchemeColor = 8
 .ShapeRange.Fill.Transparency = 0#
 .ShapeRange.Line.Weight = 0.75
 .ShapeRange.Line.DashStyle = msoLineSolid
 .ShapeRange.Line.Style = msoLineSingle
 .ShapeRange.Line.Transparency = 0#
 .ShapeRange.Line.Visible = msoTrue
 .ShapeRange.Line.ForeColor.SchemeColor = 64
 .ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
 .Visible = False
End With
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 510, 200, 10, 100).Name = "Weiß"
ActiveSheet.Shapes("Weiß").Select
With Selection
 .ShapeRange.Fill.Visible = msoTrue
 .ShapeRange.Fill.Solid
 .ShapeRange.Fill.ForeColor.SchemeColor = 9
 .ShapeRange.Fill.Transparency = 0#
 .ShapeRange.Line.Weight = 0.75
 .ShapeRange.Line.DashStyle = msoLineSolid
 .ShapeRange.Line.Style = msoLineSingle
 .ShapeRange.Line.Transparency = 0#
 .ShapeRange.Line.Visible = msoTrue
 .ShapeRange.Line.ForeColor.SchemeColor = 64
 .ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
 .ShapeRange.Line.Visible = msoFalse
 .Visible = False
End With
With ActiveSheet
 For B = 1 To Len(Buchstabe)
 If Mid(Buchstabe, B, 1) = "0" Then
 .Shapes("Weiß").Copy
 Else
 .Shapes("Schwarz").Copy
 End If
 MsgBox .Shapes.Count
 .Paste
 MsgBox .Shapes.Count
 MsgBox .Shapes.Item(.Shapes.Count).Name
 MsgBox .Shapes.Item(.Shapes.Count - 1).Name
 '.Shapes.Item(.Shapes.Count).Select
 'With Selection
 With .Shapes.Item(.Shapes.Count)
 .ShapeRange.Left = B \* 10
 .ShapeRange.Top = 150
 .ShapeRange.widht = 10
 .ShapeRange.Height = 100
 End With
Next B
End With
Range("A1").Select
End Sub

Gruß
Reinhard

Hallo Rainer,
neuer Code:

Sub ttt()
Dim R As Shape, Buchstabe As String, B As Integer, F As Boolean
Buchstabe = "01001101010011010100110101010101010101010110101011010101"
For Each R In ActiveSheet.Shapes
 If R.Name = "Schwarz" Or R.Name = "Weiß" Or R.Name Like "Rectangle\*" Then R.Delete
Next R
With ActiveSheet
 For B = 1 To Len(Buchstabe)
 If Mid(Buchstabe, B, 1) = "0" Then
 F = False
 Else
 F = True
 End If ' left,top,widht,height
 Call Zeichnen(F, B \* 10, 100, 10, 100)
Next B
End With
Range("A1").Select
End Sub

Sub Zeichnen(ByVal Schwarz As Boolean, l As Integer, t As Integer, w As Integer, h As Integer)
ActiveSheet.Shapes.AddShape(msoShapeRectangle, l, t, w, h).Select
With Selection
 If Schwarz Then
 .ShapeRange.Fill.ForeColor.SchemeColor = 8
 Else
 .ShapeRange.Fill.ForeColor.SchemeColor = 9
 .ShapeRange.Line.Visible = msoFalse
 End If
End With
End Sub

Hallo Reinhard,

das sieht doch schon gut aus! Ich teste, sobald ich ein VBA unter die Finger bekomme. :smile:

Ich habe inzwischen schon an ein ‚Picture‘.ocx gedacht. :smile:

Gruß, Rainer