使用 VBA 和自动处理条形码 Excel
您可以使用 VisualBasic for Applications (VBA) 解决 Excel 中的许多问题。 在此,我们将向您展示如何使用 VBA 嵌入、使用和删除 ActiveBarcode 控件:
将 ActiveBarcode 控件嵌入工作表:
在此示例中,条形码控件将被置于单元格的正上方。这样,条形码看起来就像是在单元格内。
首先,我们读取单元格的大小:
CurrentCell = "C3" MyHeight = Range(CurrentCell).Height MyWidth = Range(CurrentCell).Width MyTop = Range(CurrentCell).Top MyLeft = Range(CurrentCell).Left请注意,单元格应有一个最小尺寸,以便条形码可以放入其中。如果单元格太小,将显示 Size 错误。因此,我们将单元格的高度调整为 30 像素:
' Enlarge the cell height to 30 pixels Range(CurrentCell).RowHeight = 30以下函数将在单元格的正上方创建条形码控件:
ActiveSheet.OLEObjects.Add(ClassType:="ACTIVEBARCODE.BarcodeCtrl.1", Link:=False, _ DisplayAsIcon:=False, Width:=MyWidth , Height:=MyHeight, Top:=MyTop + 2,_ Left:=MyLeft + 4).Select您可以将条形码对象与单元格直接链接:
ActiveSheet.OLEObjects(MyBarcode).LinkedCell = "B7"为了便于访问控件,我们将控件名称存储在变量 MyBarcode 中:
MyBarcode = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name现在,您可以随意使用条形码对象的 属性 和 方法:
' set properties ActiveSheet.OLEObjects(MyBarcode).Object.Font.Size = 8 ActiveSheet.OLEObjects(MyBarcode).Object.Type = 14 ' Code 128 ActiveSheet.OLEObjects(MyBarcode).Object.Text = Range("C3")如果不再需要该控件,可以将其从工作表中删除:
ActiveSheet.OLEObjects(MyBarcode).Delete提示:如果需要 Windows 在宏中处理即将发生的事件(通常称为 KeepWindowsAlive),您可以使用以下 VBA 函数强制进行处理:
DoEvents这可能是必要的,例如,如果控件必须重新绘制。