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"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:
MyHeight = Range(CurrentCell).Height
MyWidth = Range(CurrentCell).Width
MyTop = Range(CurrentCell).Top
MyLeft = Range(CurrentCell).Left
' Zeilenhöhe erweitern auf 30 pixel (Wert ggf. nach Wunsch ändern)Mit folgendem Aufruf erzeugen Sie den ActiveBarcode Control genau über der Zelle:
Range(CurrentCell).RowHeight = 30
' Barcode genau über der Zelle einfügenZur einfacheren Handhabung merken wir uns den Namen des Controls:
ActiveSheet.OLEObjects.Add(ClassType:="ACTIVEBARCODE.BarcodeCtrl.1", Link:=False, _
DisplayAsIcon:=False, Width:=MyWidth , Height:=MyHeight, Top:=MyTop + 2,_
Left:=MyLeft + 4).Select
MyBarcode = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).NameNun können Sie die Properties und Methoden des Barcode Objekts nach Ihren Wünchen verwenden:
' Barcodeeigenschaften setzenWenn 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).Object.Font.Size = 8
ActiveSheet.OLEObjects(MyBarcode).Object.Type = 14 ' Code 128
ActiveSheet.OLEObjects(MyBarcode).Object.Text = Range("C3")
ActiveSheet.OLEObjects(MyBarcode).DeleteTipp: 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:
DoEventsDies kann z.B. notwendig sein, wenn der Control sich neu zeichnen muss.