Excel
Streepjescodeobjecten met VBA

 Standard of hoger

Barcodes gebruiken en automatiseren met VBA in Excel

Je kunt VisualBasic for Applications (VBA) gebruiken om veel dingen in Excel op te lossen. Hier laten we zien hoe je het ActiveBarcode-besturingselement kunt insluiten, gebruiken en verwijderen met VBA:

De ActiveBarcode-besturing insluiten in een blad:
In dit voorbeeld wordt een barcodebesturingselement direct boven een cel geplaatst. Dan lijkt het alsof de streepjescode in een cel staat.

Eerst lezen we de celgrootte af:

CurrentCell = "C3"
MyHeight = Range(CurrentCell).Height
MyWidth = Range(CurrentCell).Width
MyTop = Range(CurrentCell).Top
MyLeft = Range(CurrentCell).Left
Houd er rekening mee dat een cel een minimale grootte moet hebben zodat de barcode erin past. Als de cel te klein is, wordt een Groottefout weergegeven. Daarom passen we de hoogte van de cel aan tot 30 pixels:
' Enlarge the cell height to 30 pixels
Range(CurrentCell).RowHeight = 30
De volgende functie maakt de barcodebesturing direct boven de cel:
ActiveSheet.OLEObjects.Add(ClassType:="ACTIVEBARCODE.BarcodeCtrl.1", Link:=False, _
 DisplayAsIcon:=False, Width:=MyWidth , Height:=MyHeight, Top:=MyTop + 2,_
 Left:=MyLeft + 4).Select
Je kunt het barcodeobject direct koppelen aan een cel:
ActiveSheet.OLEObjects(MyBarcode).LinkedCell = "B7"
Om gemakkelijk toegang te krijgen tot de controle, slaan we de naam van de controle op in de variabele MijnBarcode:
MyBarcode = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name
Nu kun je de eigenschappen en methoden van het barcodeobject gebruiken zoals je wilt:
' set properties
ActiveSheet.OLEObjects(MyBarcode).Object.Font.Size = 8
ActiveSheet.OLEObjects(MyBarcode).Object.Type = 14 ' Code 128
ActiveSheet.OLEObjects(MyBarcode).Object.Text = Range("C3")
Als je het besturingselement niet meer nodig hebt, kun je het verwijderen uit het blad:
ActiveSheet.OLEObjects(MyBarcode).Delete
Tip: Als het nodig is dat Windows aankomende gebeurtenissen verwerkt (vaak KeepWindowsAlive genoemd) binnen een macro, kun je dit forceren door de volgende VBA-functie te gebruiken:
DoEvents
Dit kan bijvoorbeeld nodig zijn als het besturingselement zichzelf nieuw moet tekenen.