Excel
Oggetti di codici a barre con VBA

Utilizzo e automazione dei codici a barre con VBA in Excel

1

È possibile utilizzare VisualBasic, Applications Edition (VBA) per risolvere molte operazioni in Excel. Qui ti mostreremo come incorporare, utilizzare ed eliminare il controllo ActiveBarcode con VBA:

Incorporamento del controllo ActiveBarcode in un foglio:
In questo esempio un controllo codice a barre verrà posizionato direttamente sopra una cella. Allora sembra che il codice a barre sarebbe all'interno di una cella.

Per prima cosa leggiamo le dimensioni delle celle:

CurrentCell = "C3"
MyHeight = Range(CurrentCell).Height
MyWidth = Range(CurrentCell).Width
MyTop = Range(CurrentCell).Top
MyLeft = Range(CurrentCell).Left
Si prega di notare che una cella deve avere una dimensione minima in modo che il codice a barre possa adattarsi. Se la cella è troppo piccola, verrà visualizzato un "Errore di dimensione". Quindi ridimensioniamo l'altezza della cella a 30 pixel:
' Enlarge the cell height to 30 pixels
Range(CurrentCell).RowHeight = 30
La seguente funzione creerà il controllo del codice a barre direttamente sopra la cella:
ActiveSheet.OLEObjects.Add(ClassType:="ACTIVEBARCODE.BarcodeCtrl.1", Link:=False, _
DisplayAsIcon:=False, Width:=MyWidth , Height:=MyHeight, Top:=MyTop + 2,_
Left:=MyLeft + 4).Select
Per ottenere un facile accesso al controllo ricordiamo il nome del controllo in una variabile denominata 'MyBarcode':
MyBarcode = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name
Ora è possibile utilizzare le proprietà e i metodi dell'oggetto codice a barre come ti piace:
' set properties
ActiveSheet.OLEObjects(MyBarcode).Object.Font.Size = 8
ActiveSheet.OLEObjects(MyBarcode).Object.Type = 14 ' Code 128
ActiveSheet.OLEObjects(MyBarcode).Object.Text = Range("C3")
Se il controllo non è più necessario, è possibile eliminarlo dal foglio:
ActiveSheet.OLEObjects(MyBarcode).Delete
Suggerimento: Se è necessario che Windows elabori gli eventi imminenti (spesso denominati come "KeepWindowsAlive") all'interno di una macro, è possibile forzare questa operazione utilizzando la seguente funzione VBA:
DoEvents
Ciò può essere necessario, ad esempio se il Controllo deve disegnarsi di nuovo.