Använda och automatisera streckkoder med VBA i Excel
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).LeftObservera 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 = 30Fö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).SelectDu 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).NameNu 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).DeleteTips: 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:
DoEventsDetta kan vara nödvändigt, t.ex. om kontrollen måste rita om sig själv.