Excel – Objekty čárových kódů s VBA

 Standard nebo vyšší

Používání a automatizace čárových kódů pomocí VBA v Excel

Pomocí jazyka VisualBasic for Applications (VBA) můžete v aplikaci Excel řešit mnoho věcí. Zde vám ukážeme, jak vložit, používat a odstranit ovládací prvek ActiveBarcode pomocí VBA:

Vložení ovládacího prvku ActiveBarcode do listu:
V tomto příkladu bude ovládací prvek čárového kódu umístěn přímo nad buňkou. Poté to vypadá, jako by byl čárový kód uvnitř buňky.

Nejprve přečteme velikost buněk:
CurrentCell = "C3"
MyHeight = Range(CurrentCell).Height
MyWidth = Range(CurrentCell).Width
MyTop = Range(CurrentCell).Top
MyLeft = Range(CurrentCell).Left
Vezměte prosím na vědomí, že buňka by měla mít minimální velikost, aby se do ní vešel čárový kód. Pokud je buňka příliš malá, zobrazí se chyba velikosti. Změníme tedy výšku buňky na 30 pixelů:
' Enlarge the cell height to 30 pixels
Range(CurrentCell).RowHeight = 30
Následující funkce vytvoří ovládací prvek čárového kódu přímo nad buňkou:
ActiveSheet.OLEObjects.Add(ClassType:="ACTIVEBARCODE.BarcodeCtrl.1", Link:=False, _
 DisplayAsIcon:=False, Width:=MyWidth , Height:=MyHeight, Top:=MyTop + 2,_
 Left:=MyLeft + 4).Select
Objekt čárového kódu můžete přímo propojit s buňkou:
ActiveSheet.OLEObjects(MyBarcode).LinkedCell = "B7"
Pro snadný přístup k ovládacímu prvku uložíme jeho název do proměnné MyBarcode:
MyBarcode = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name
Nyní můžete vlastnosti a metody objektu čárového kódu používat podle libosti:
' set properties
ActiveSheet.OLEObjects(MyBarcode).Object.Font.Size = 8
ActiveSheet.OLEObjects(MyBarcode).Object.Type = 14 ' Code 128
ActiveSheet.OLEObjects(MyBarcode).Object.Text = Range("C3")
Pokud již ovládací prvek nepotřebujete, můžete jej z listu odstranit:
ActiveSheet.OLEObjects(MyBarcode).Delete
Tip: Pokud je nutné, aby Windows zpracovával nadcházející události (často označované jako KeepWindowsAlive) v rámci makra, můžete to vynutit pomocí následující funkce VBA:
DoEvents
To může být nutné například v případě, že se ovládací prvek musí překreslit.