Excel
Objekti crtičnog koda pomoću VBA

 Standard ili viši

Korištenje i automatizacija barkodova pomoću VBA u Excel

Možete koristiti Visual Basic za aplikacije (VBA) za rješavanje mnogih stvari u Excelu. Ovdje ćemo vam pokazati kako ugraditi, koristiti i izbrisati kontrolu ActiveBarcode pomoću VBA:

Ugradnja ActiveBarcode kontrole u list:
U ovom primjeru kontrola barkoda bit će postavljena izravno iznad ćelije. Tako izgleda kao da je barkod unutar ćelije.

Prvo pročitamo veličinu ćelija:
CurrentCell = "C3"
MyHeight = Range(CurrentCell).Height
MyWidth = Range(CurrentCell).Width
MyTop = Range(CurrentCell).Top
MyLeft = Range(CurrentCell).Left
Molimo imajte na umu da ćelija mora imati minimalnu veličinu kako bi se bar kod mogao u nju uklopiti. Ako je ćelija premala, prikazat će se pogreška veličine. Stoga visinu ćelije mijenjamo na 30 piksela:
' Enlarge the cell height to 30 pixels
Range(CurrentCell).RowHeight = 30
Sljedeća funkcija stvorit će kontrolu barkoda izravno iznad ćelije:
ActiveSheet.OLEObjects.Add(ClassType:="ACTIVEBARCODE.BarcodeCtrl.1", Link:=False, _
 DisplayAsIcon:=False, Width:=MyWidth , Height:=MyHeight, Top:=MyTop + 2,_
 Left:=MyLeft + 4).Select
Možete izravno povezati objekt crtičnog koda s ćelijom:
ActiveSheet.OLEObjects(MyBarcode).LinkedCell = "B7"
Kako bismo olakšali pristup kontroli, pohranjujemo ime kontrole u varijablu MyBarcode:
MyBarcode = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name
Sada možete koristiti svojstva i metode objekta crtičnog koda po želji:
' set properties
ActiveSheet.OLEObjects(MyBarcode).Object.Font.Size = 8
ActiveSheet.OLEObjects(MyBarcode).Object.Type = 14 ' Code 128
ActiveSheet.OLEObjects(MyBarcode).Object.Text = Range("C3")
Ako vam kontrola više nije potrebna, možete je izbrisati s lista:
ActiveSheet.OLEObjects(MyBarcode).Delete
Savjet: Ako je potrebno da Windows obradi nadolazeće događaje (često nazivane KeepWindowsAlive) unutar makra, to možete prisiliti koristeći sljedeću VBA funkciju:
DoEvents
Ovo može biti potrebno, npr. ako Kontrola mora ponovno nacrtati sebe.