Добрый день! Написал макрос, который формирует этикетки с штрихкодом на основании данных из базы данных.
Текст записывается в объекты типа "Label" ( надпись) класса "shape". Штрихкод создается объектом Barcode.Ctrl.1 класса object.(activeX)Принцип работы следующий:
1. Запрос к БД
2. Полученные данные записываются на лист "RecordSet"
3. Созданный мною модуль класса "Classlabel_1" генерирует одну этикетку. Цикл обрабатывает класс столько раз, сколько нужно этикеток. Этикеток может быть от 1 до 500. Все этикетки уникальные. Размер этикетки составляет 58 мм х 40 мм. Расстояние между первой этикеткой и последующей задается переменной dTop (код создания этикетки ниже) и далее печатается на принтер этикеток:
Приложенный файл возможно не запуститься, т.к. там нужна спец. библиотека которая формирует activeX элемент - штрихкод.
Проблема в следующем.
На моем мониторе параметр dTop я задал как 115, но на других компьютерах нужно этот параметр подбирать. Этот параметр служит для расположения в зоне печати одной этикетки. Если создается их n-количество штук, то текст сползает вниз или вверх тем самым заходя на другую этикетку.
Можно это как то решить? Может я иду неправильным путем и через объекты "Label" я не смогу решить задачу. В целом все работает, только вот с определением границ печати проблема.
Как правильно лучше решить эту проблему?
Текст записывается в объекты типа "Label" ( надпись) класса "shape". Штрихкод создается объектом Barcode.Ctrl.1 класса object.(activeX)Принцип работы следующий:
1. Запрос к БД
2. Полученные данные записываются на лист "RecordSet"
3. Созданный мною модуль класса "Classlabel_1" генерирует одну этикетку. Цикл обрабатывает класс столько раз, сколько нужно этикеток. Этикеток может быть от 1 до 500. Все этикетки уникальные. Размер этикетки составляет 58 мм х 40 мм. Расстояние между первой этикеткой и последующей задается переменной dTop (код создания этикетки ниже) и далее печатается на принтер этикеток:
Код |
---|
Sub CreateLabels(lRows) Dim i As Integer, x As Integer Dim dTop As Double dTop = 0 Dim lab As New ClassLabel_1 Dim arrdata() As Variant arrdata() = Sh1.Range(Sh1.Cells(2, 10), Sh1.Cells(lRows, 15)) For i = 1 To UBound(arrdata, 1) Step 1 With lab .stLabArticle = arrdata(i, 3) .stLabBarcode = arrdata(i, 6) .stLabName = arrdata(i, 1) lab.createLabel (dTop) End With dTop = dTop + 115 Next i Erase arrdata() |
Проблема в следующем.
На моем мониторе параметр dTop я задал как 115, но на других компьютерах нужно этот параметр подбирать. Этот параметр служит для расположения в зоне печати одной этикетки. Если создается их n-количество штук, то текст сползает вниз или вверх тем самым заходя на другую этикетку.
Можно это как то решить? Может я иду неправильным путем и через объекты "Label" я не смогу решить задачу. В целом все работает, только вот с определением границ печати проблема.
Как правильно лучше решить эту проблему?