Excel
Streckkodsobjekt med VBA

 Standard eller högre

Använda och automatisera streckkoder med VBA i Excel

Du kan använda VisualBasic for Applications (VBA) för att lösa många problem i Excel. Här visar vi hur du bäddar in, använder och tar bort ActiveBarcode-kontrollen med VBA:

Bädda in ActiveBarcode-kontrollen i ett ark:
I det här exemplet placeras en streckkodskontroll direkt ovanför en cell. Då ser det ut som om streckkoden skulle ligga inuti en cell.

Först läser vi cellernas storlek:
CurrentCell = "C3"
MyHeight = Range(CurrentCell).Height
MyWidth = Range(CurrentCell).Width
MyTop = Range(CurrentCell).Top
MyLeft = Range(CurrentCell).Left
Observera att en cell måste ha en viss minimistorlek för att streckkoden ska få plats. Om cellen är för liten visas ett storleksfel. Vi ändrar därför cellens höjd till 30 pixlar:
' Enlarge the cell height to 30 pixels
Range(CurrentCell).RowHeight = 30
Följande funktion skapar streckkodskontrollen direkt ovanför 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 länka streckkodsobjektet direkt till en cell:
ActiveSheet.OLEObjects(MyBarcode).LinkedCell = "B7"
För att enkelt kunna komma åt kontrollen lagrar vi namnet på kontrollen i variabeln MyBarcode:
MyBarcode = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name
Nu kan du använda egenskaperna och metoderna för streckkodsobjektet som du vill:
' set properties
ActiveSheet.OLEObjects(MyBarcode).Object.Font.Size = 8
ActiveSheet.OLEObjects(MyBarcode).Object.Type = 14 ' Code 128
ActiveSheet.OLEObjects(MyBarcode).Object.Text = Range("C3")
Om du inte längre behöver kontrollen kan du ta bort den från arket:
ActiveSheet.OLEObjects(MyBarcode).Delete
Tips: Om Windows behöver bearbeta kommande händelser (ofta kallat KeepWindowsAlive) inom ett makro kan du tvinga fram detta genom att använda följande VBA-funktion:
DoEvents
Detta kan vara nödvändigt, t.ex. om kontrollen måste rita om sig själv.