Excel
Strekkodeobjekter med VBA

 Standard eller høyere

Bruk og automatisering av strekkoder med VBA i Excel

Du kan bruke VisualBasic for Applications (VBA) til å løse mange oppgaver i Excel. Her viser vi deg hvordan du kan legge inn, bruke og slette ActiveBarcode-kontrollen med VBA:

Innebygge ActiveBarcode-kontrollen i et ark:
I dette eksemplet plasseres en strekkodekontroll rett over en celle. Da ser det ut som om strekkoden befinner seg inne i en celle.

Først leser vi cellestørrelsen:
CurrentCell = "C3"
MyHeight = Range(CurrentCell).Height
MyWidth = Range(CurrentCell).Width
MyTop = Range(CurrentCell).Top
MyLeft = Range(CurrentCell).Left
Vær oppmerksom på at en celle må ha en minimumsstørrelse for at strekkoden skal passe inn i den. Hvis cellen er for liten, vises en størrelsesfeil. Derfor endrer vi høyden på cellen til 30 piksler:
' Enlarge the cell height to 30 pixels
Range(CurrentCell).RowHeight = 30
Følgende funksjon vil opprette strekkodekontrollen rett over cellen:
ActiveSheet.OLEObjects.Add(ClassType:="ACTIVEBARCODE.BarcodeCtrl.1", Link:=False, _
 DisplayAsIcon:=False, Width:=MyWidth , Height:=MyHeight, Top:=MyTop + 2,_
 Left:=MyLeft + 4).Select
Du kan koble strekkodeobjektet direkte til en celle:
ActiveSheet.OLEObjects(MyBarcode).LinkedCell = "B7"
For å få enkel tilgang til kontrollen lagrer vi navnet på kontrollen i variabelen MyBarcode:
MyBarcode = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name
Nå kan du bruke egenskapene og metodene til strekkodeobjektet slik du ønsker:
' set properties
ActiveSheet.OLEObjects(MyBarcode).Object.Font.Size = 8
ActiveSheet.OLEObjects(MyBarcode).Object.Type = 14 ' Code 128
ActiveSheet.OLEObjects(MyBarcode).Object.Text = Range("C3")
Hvis du ikke lenger trenger kontrollen, kan du slette den fra arket:
ActiveSheet.OLEObjects(MyBarcode).Delete
Tips: Hvis det er nødvendig for Windows å behandle kommende hendelser (ofte referert til som KeepWindowsAlive) i en makro, kan du tvinge dette ved å bruke følgende VBA-funksjon:
DoEvents
Dette kan være nødvendig, f.eks. hvis kontrollen må tegne seg selv på nytt.