Usando e automatizando códigos de barras com VBA em Excel
Pode utilizar o VisualBasic for Applications (VBA) para resolver muitas coisas no Excel. Aqui vamos mostrar-lhe como incorporar, utilizar e eliminar o controlo ActiveBarcode com VBA:
Incorporando o controle ActiveBarcode em uma folha:
Neste exemplo, um controlo de código de barras será colocado diretamente por cima de uma célula. Assim, parece que o código de barras está dentro de uma célula.
Primeiro, lemos o tamanho das células:
CurrentCell = "C3" MyHeight = Range(CurrentCell).Height MyWidth = Range(CurrentCell).Width MyTop = Range(CurrentCell).Top MyLeft = Range(CurrentCell).LeftTenha em atenção que uma célula deve ter um tamanho mínimo para que o código de barras possa caber nela. Se a célula for demasiado pequena, será apresentado um erro de tamanho. Por isso, redimensionamos a altura da célula para 30 pixéis:
' Enlarge the cell height to 30 pixels Range(CurrentCell).RowHeight = 30A função seguinte criará o controlo do código de barras diretamente acima da célula:
ActiveSheet.OLEObjects.Add(ClassType:="ACTIVEBARCODE.BarcodeCtrl.1", Link:=False, _ DisplayAsIcon:=False, Width:=MyWidth , Height:=MyHeight, Top:=MyTop + 2,_ Left:=MyLeft + 4).SelectÉ possível ligar diretamente o objeto código de barras a uma célula:
ActiveSheet.OLEObjects(MyBarcode).LinkedCell = "B7"Para obter um acesso fácil ao controlo, armazenamos o nome do controlo na variável MyBarcode:
MyBarcode = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).NameAgora pode utilizar as properties e methods do objeto código de barras como desejar:
' 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 já não precisar do controlo, pode eliminá-lo da folha:
ActiveSheet.OLEObjects(MyBarcode).DeleteSugestão: Se for necessário que o Windows processe eventos futuros (frequentemente designados por "KeepWindowsAlive") numa macro, pode forçá-lo utilizando a seguinte função VBA:
DoEventsIsto pode ser necessário, por exemplo, se o Controlo tiver de se desenhar de novo.