Excel — объекты штрих-кода с VBA

 Standard или выше

Использование и автоматизация штрих-кодов с помощью VBA в Excel

Вы можете использовать VisualBasic для приложений (VBA) для решения многих задач в Excel. Здесь мы продемонстрируем, как встроить, использовать и удалить элемент управления ActiveBarcode с помощью VBA:

Встраивание элемента управления ActiveBarcode в лист:
В данном примере элемент управления штрих-кодом будет размещен непосредственно над ячейкой. В результате будет создаваться впечатление, что штрих-код находится внутри ячейки.

Сначала мы читаем размер ячеек:
CurrentCell = "C3"
MyHeight = Range(CurrentCell).Height
MyWidth = Range(CurrentCell).Width
MyTop = Range(CurrentCell).Top
MyLeft = Range(CurrentCell).Left
Обратите внимание, что ячейка должна иметь минимальный размер, чтобы штрихкод мог в нее поместиться. Если ячейка слишком мала, будет отображаться ошибка размера. Поэтому мы изменяем высоту ячейки до 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
Это может потребоваться, например, если элемент управления должен перерисовать себя заново.