Страницы: 1
RSS
Как обновить штрихкод перед печатью
 
Добрый день!
Помогите разобраться в коде.
Сам я в VBA практически ноль. Могу только по логике понять что куда.

Есть задача напечатать 100 товарных чеков со штрихкодом
Установил StrokeScribe для печати штрихкода.

Нашел код для макроса.
Он отрабатывает, меняет номер документа, отправляет на печать, но штрихкод не обновляется, а печатается на всех листах одинаковый - первый по порядку.
После завершения печати, штрихкод на экране меняется на последний.
Пробовал ставить паузу, думал не успевает обновиться StrokeScribe. Пробовал вставлять refresh. Нифига не помогает.

Как сделать, чтобы перед печатью штрихкод обновлялся?
Код
Sub Pprint_Blanc_Chek()
     Dim i As Long
     Dim С As Long
     Dim ПО As Long
     
     С = 10000001
     ПО = 10000004
     
     For i = С To ПО 'это диапазон номеров ордеров
         Range("AM10").Value = i 'допустим, это ячейка с номером ордера
         Worksheets(1).Calculate
         Application.Wait Time:=Now + TimeValue("0:00:02")
         Worksheets(1).PrintOut Copies:=1, Collate:=True
     Next i  
End Sub
 
1. Не Worksheets(1).Calculate, а Range("AM10").Calculate. А еще лучше, видимо Range("V10").Calculate
2. Какая связь между элементом со штрих-кодом и ячейкой Range("AM10")? Я не нашел. И с ячейкой V10 тоже. Даже если изменять значение ячейки вручную(автопересчет включен) - на элементе ничего не изменяется. Вывод - проблема не в ячейке, а в элементе.
Вам скорее надо делать как-то так:
Код
For i = С To ПО 'это диапазон номеров ордеров
        StrokeScribe1.Text = i & ""
         Worksheets(1).PrintOut Copies:=1, Collate:=True
Next i
Изменено: Дмитрий Щербаков - 03.04.2018 16:07:45 (дополнил пояснения)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо за ответ, но теперь печатает один и тот же ШК и не меняет номер в документе.
В ячейке AM10 создается порядковый номер чека вида: 10000004
В ячейке V10 формула =СЦЕПИТЬ(90000;AM10), т.к. в коде почему то не давал сразу генерировать полный номер вида 9000010000004
А StrokeScribe  уже берет значение из ячейки V10
Код привязан на кнопку CommandButton

А ожидалось такое поведение: при нажатии кнопки номер чека меняется на +1, обновляется ШК, отправляется на печать. Далее повторяется от С до ПО

Код теперь выглядит так:
Код
Private Sub CommandButton1_Click()
            StrokeScribe1.Alphabet = CODE39
            Dim data As String
                data = ActiveSheet.Cells(1, 1)
                StrokeScribe1.Text = data
End Sub
Private Sub CommandButton2_Click()
Dim i As Long
     Dim С As Long
     Dim ПО As Long
     
     С = 10000001
     ПО = 10000004
        For i = С To ПО 'это диапазон номеров ордеров
        StrokeScribe1.Text = i & ""
              
          Worksheets(1).PrintOut Copies:=1, Collate:=True
     Next i
End Sub
Private Sub StrokeScribe1_GotFocus()
End Sub

 
1. Не у всех есть программа с компонентом StrokeScribe1. откуда Вы его скачивали? Как устанавливали? Ссылку дать можете?
2.
Цитата
stawer написал:
не меняет номер в документе
Кто ж знал, что и это надо. Добавьте в цикл изменение номера документа, Вам виднее где это надо.
3.
Цитата
stawer написал:
при нажатии кнопки номер чека меняется на +1
Да? А судя по приложенному коду ожидалось печатать минимум 4 документа...
4. Если Вы меняете номер вручную - ШК меняется? Что-то подсказывает, что нет...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Добрый день!
брал отсюда: https://strokescribe.com/ru/about.html
устанавливается просто, в инструкции есть примеры кода, но я к сожалению осваивал бейсик еще в институте в 1997 году...
И мне так кажется, что там совсем другой был бейсик.

Насчет цикла я и не понял как сделать чтобы сначала номер обновился в документа, а затем обновился ШК, а потом пошло на печать
В коде не стал делать 100 документов иначе не остановишь печать
Первый раз с дуру отправил...

При смене номера вручную ШК меняется.  
 
Апну.
Добавил в код пересчет номера документа
Теперь поведение такое:
Первым документом устанавливает начальный номер 10000001, меняет номер ШК с этим номером.
Отправляет на печать. при этом номера документов меняются, а ШК нет.
После завершения печати ШК принимает номер последнего документа.
Никак не могу понять, как записать правильно.

Может кто подскажет, что не так?
Код
            StrokeScribe1.Alphabet = CODE39
            Dim data As String
                data = ActiveSheet.Cells(1, 1)
                StrokeScribe1.Text = data
End Sub
Private Sub CommandButton2_Click()
Dim i As Long
     Dim С As Long
     Dim ПО As Long
     
     С = 10000001
     ПО = 10000004
               
        For i = С To ПО 'это диапазон номеров ордеров
        Range("AM10").Value = i 'допустим, это ячейка с номером ордера
        StrokeScribe1.Text = i & ""
        Worksheets(1).PrintOut Copies:=1, Collate:=True
        Worksheets(1).Calculate
     Next i
End Sub
Private Sub StrokeScribe1_GotFocus()
End Sub

Страницы: 1
Наверх