Utilizzo e automazione dei codici a barre con VBA in Excel
È possibile utilizzare VisualBasic for Applications (VBA) per risolvere molti problemi in Excel. Qui vi mostreremo come incorporare, utilizzare ed eliminare il controllo ActiveBarcode con VBA:
Incorporare il controllo ActiveBarcode in un foglio:
In questo esempio, il controllo del codice a barre verrà posizionato direttamente sopra una cella. In questo modo sembra che il codice a barre si trovi all'interno di una cella.
Per prima cosa leggiamo la dimensione delle celle:
CurrentCell = "C3" MyHeight = Range(CurrentCell).Height MyWidth = Range(CurrentCell).Width MyTop = Range(CurrentCell).Top MyLeft = Range(CurrentCell).LeftSi noti che una cella deve avere una dimensione minima per potervi inserire il codice a barre. 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 = 30La funzione seguente crea 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È possibile collegare direttamente l'oggetto codice a barre a una cella:
ActiveSheet.OLEObjects(MyBarcode).LinkedCell = "B7"Per accedere facilmente al controllo, memorizziamo il nome del controllo nella variabile MyBarcode:
MyBarcode = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).NameOra è possibile utilizzare le proprietà e metodi dell'oggetto codice a barre come si desidera:
' 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 serve più, è possibile eliminarlo dal foglio:
ActiveSheet.OLEObjects(MyBarcode).DeleteSuggerimento: se è necessario che Windows elabori gli eventi imminenti (spesso denominati "KeepWindowsAlive") all'interno di una macro, è possibile forzarli utilizzando la seguente funzione VBA:
DoEventsQuesto può essere necessario, ad esempio se il Controllo deve disegnare se stesso in modo nuovo.