Excel
Barcode Objekte mit VBA verwenden

Barcode Objekte mit VBA automatisieren in Excel

1

Sie können mit VisualBasic for Applications (VBA) viele Dinge einfach lösen. Hier zeigen wir Ihnen kurz, wie Sie einen Control mittels VBA einbinden, verwenden und wieder entfernen:

So fügen Sie den ActiveBarcode Control mittels VBA in das Sheet ein:
In diesem Beispiel soll der Barcode exakt über einer Zelle eingefügt werden, so als ob der Control in der Zelle platziert wäre. Selbstverständlich können Sie den Control auch frei auf Ihrem Excel-Sheet platzieren.

Zunächst wird die Zellengröße ausgelesen:

CurrentCell = "C3"
MyHeight = Range(CurrentCell).Height
MyWidth = Range(CurrentCell).Width
MyTop = Range(CurrentCell).Top
MyLeft = Range(CurrentCell).Left
Bitte beachten Sie, dass die Zelle eine gewisse Mindesthöhe und -breite haben sollte, damit der Barcode dargestellt werden kann. Ist die Zelle zu klein, erscheint ein "Size Error". So erweitern Sie z.B. die Zellenhöhe auf 30 Pixel:
' Zeilenhöhe erweitern auf 30 pixel (Wert ggf. nach Wunsch ändern)
Range(CurrentCell).RowHeight = 30
Mit folgendem Aufruf erzeugen Sie den ActiveBarcode Control genau über der Zelle:
' Barcode genau über der Zelle einfügen
ActiveSheet.OLEObjects.Add(ClassType:="ACTIVEBARCODE.BarcodeCtrl.1", Link:=False, _
DisplayAsIcon:=False, Width:=MyWidth , Height:=MyHeight, Top:=MyTop + 2,_
Left:=MyLeft + 4).Select
Zur einfacheren Handhabung merken wir uns den Namen des Controls:
MyBarcode = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name
Nun können Sie die Properties und Methoden des Barcode Objekts nach Ihren Wünchen verwenden:
' Barcodeeigenschaften setzen
ActiveSheet.OLEObjects(MyBarcode).Object.Font.Size = 8
ActiveSheet.OLEObjects(MyBarcode).Object.Type = 14 ' Code 128
ActiveSheet.OLEObjects(MyBarcode).Object.Text = Range("C3")
Wenn Sie den Control nicht mehr innerhalb des Makros benötigen (z.B. nach einem Ausdruck), können Sie diesen auch leicht wieder entfernen:
ActiveSheet.OLEObjects(MyBarcode).Delete
Tipp: Sollte es nötig sein, dass Windows in einem Makro zwischendurch anstehende Events abarbeiten soll (häufig auch "KeepWindowsAlive" genannt), können Sie dies durch die folgende VBA Funktion erzwingen:
DoEvents
Dies kann z.B. notwendig sein, wenn der Control sich neu zeichnen muss.