Barcodes mit Excel und VBA automatisieren
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:="BARCODE.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 Eigenschaften des Controls nach Ihren Wünchen besetzen:
' 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.
|