Používání a automatizace čárových kódů pomocí VBA v Excel
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).LeftVezmě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 = 30Ná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).SelectObjekt čá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).NameNyní 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).DeleteTip: 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:
DoEventsTo může být nutné například v případě, že se ovládací prvek musí překreslit.