Excel
Objetos de código de barras con VBA

Uso y automatización de códigos de barras con VBA en Excel

1

Puede usar VisualBasic para Aplicaciones (VBA) para resolver muchas cosas en Excel. Aquí le mostraremos cómo incrustar, usar y eliminar el control ActiveBarcode con VBA:

Incrustar el control ActiveBarcode en una hoja:
En este ejemplo, se colocará un control de código de barras directamente encima de una celda. Entonces parece que el código de barras estaría dentro de una celda.

Primero leemos el tamaño de las celdas:

CurrentCell = "C3"
MyHeight = Range(CurrentCell).Height
MyWidth = Range(CurrentCell).Width
MyTop = Range(CurrentCell).Top
MyLeft = Range(CurrentCell).Left
Tenga en cuenta que una celda debe tener un tamaño mínimo para que el código de barras pueda caber en ella. Si la celda es demasiado pequeña, se mostrará un 'Error de tamaño'. Así que cambiamos el tamaño de la altura de la celda a 30 píxeles:
' Enlarge the cell height to 30 pixels
Range(CurrentCell).RowHeight = 30
La siguiente función creará el control de código de barras directamente encima de la celda:
ActiveSheet.OLEObjects.Add(ClassType:="ACTIVEBARCODE.BarcodeCtrl.1", Link:=False, _
DisplayAsIcon:=False, Width:=MyWidth , Height:=MyHeight, Top:=MyTop + 2,_
Left:=MyLeft + 4).Select
Para facilitar el acceso al control recordamos el nombre del control en una variable denominada 'MyBarcode':
MyBarcode = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name
Ahora puede utilizar las propiedades y métodos del objeto de código de barras como desee:
' set properties
ActiveSheet.OLEObjects(MyBarcode).Object.Font.Size = 8
ActiveSheet.OLEObjects(MyBarcode).Object.Type = 14 ' Code 128
ActiveSheet.OLEObjects(MyBarcode).Object.Text = Range("C3")
Si ya no necesita el control, puede eliminarlo de la hoja:
ActiveSheet.OLEObjects(MyBarcode).Delete
Sugerencia: Si es necesario que Windows procese los próximos eventos (a menudo denominados "KeepWindowsAlive") dentro de una macro, puede forzar esto mediante la siguiente función VBA:
DoEvents
Esto puede ser necesario, por ejemplo, si el Control debe dibujarse de nuevo.