Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/103: Рейтинг темы: голосов - 103, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 13

Сканирование штрих кодов средствами Excel

25.10.2014, 21:52. Показов 22085. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
У меня на роботе возник вопрос ускорения перебора товара клиентам по накладной.
Ну и в первую очередь что в голову пришло так это сканирование штрих кода.

Уже есть небольшой макрос для екселя, хотелось бы доделать, но не хватает знаний в написании макросов.
По этому обращаюсь к Вам.
Все что есть прикреплю в архиве.
Сам листин макроса
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Sub ПоискКлиента()
' ПоискКлиента Макрос
' Макрос записан 22.10.2014 (LA)
 
    Dim Kod, Name, Klient As String
    Dim Num As Long
 
    Num = 3
   ' Columns("C:D").Select
   ' Selection.ClearContents
    Range("B2").Select
    Kod = Cells(3, 2)
     For i = 1 To 65535
      Windows("Накладная.xlsx").Activate
      If Cells(i, 2) = Kod Then
       If Cells(i, 7) <> Cells(i, 10) Then
        Name = Cells(i, 3)
        Cells(i, 7) = Cells(i, 7) + 1
        Klient = Cells(i, 13)
        Windows("ПОИСК.xls").Activate
        Cells(Num, 3) = Name
       Cells(5, 2) = Klient
        Num = Num + 1
      End If
      End If
     Next i
    Windows("ПОИСК.xls").Activate
End Sub
Мне на склад от менеджера приходит накладная в которой только указаны номера и названия деталей,
поэтому для этого складывается отдельный лист с штрих кодом и названием типовым для накладной, если так можно назвать будет как дешифратор.
Проверка условия наличия товара ( If Cells(i, 7) <> Cells(i, 10) Then) то есть если уже у Василия есть все количество единицы товара тогда продолжаем поиск дальше по списку, все это работает а вот else не хочет работать ( то есть кода уже никому не нужен этот товар выбивало некое сообщение что никому не нужна эта деталь.
Так же не знаю как сделать так чтоб не нужно было нажимать кнопку ИСКАТЬ так как сканер сам емулирует нажатие ентера, и нажимать после каждого сканирования кнопочку неудобно.
Прошу помощи в етих вопросах)_
Буду очень признателен)
Спасибо!
Вложения
Тип файла: rar Архив WinRAR (2).rar (239.9 Кб, 119 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.10.2014, 21:52
Ответы с готовыми решениями:

Задана таблица товаров и их штрих-кодов. Вывести данные при использовании сканера штрих-кода
Привет. Есть таблица с данными: штрих-код был отсканирован сканером, а все остальные данные введены вручную соответственно. При...

Проверка данных при сканирование в Excel
Добрый день . Ребят такая проблема . у нас большой номинал продукции которая поступает на склад , решили поставить сканер , который...

Работа Excel со сканером штрих-кодером
Помогите пожалуйста настроить работу Excel со сканером штрихкодером. Точнее у меня есть сканер и мне нужно чтобы он работал с Excel. Может...

20
 Аватар для mc-black
2786 / 718 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
28.10.2014, 11:03
Ускорить перебор товара можно. В накладной не подписаны столбцы; и не понятно, что конкретно должен сделать макрос. Там в накладной что, ещё и остаток товара показан? Попробуйте всё подписать в таблицах и сформулировать простыми словами, как должен работать поиск по штрих-коду (и что ещё кроме поиска должно происходить). Возможно в этом случае получите ответы на свои вопросы.
0
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 13
31.10.2014, 12:41  [ТС]
Понятно , спасибо.
Нужно полученный считанный код проверить по так называемой базе штрих кодов которою буду набивать сам.
В базе каждый штрих код имеет свое название например:
ШтрихКод Название товара
4047437092815 LMI27135

Для поиска по накладной нам нужно брать данные из столбца "Название товара" и по этим данным там искать, если же было найдено совпадение по накладной то напротив товара в столбе G проставляем 1 .
В столбе j указано нужное количество, проверяем если данные в столбе J равны G тогда ищем дале по списку такой же товар. Если товара такого больше никому не нужно, выводим об этом сообщение.
Вроде так.
И еще сканер после считывания сам емулирует нажатие клавишы ентер тоесть чтобы для запуска макроса каждый раз не жать кнопку поиск пробую сделать его запуск после считывания штрих кода.
Спасибо.
0
 Аватар для mc-black
2786 / 718 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
31.10.2014, 17:03
Вставьте этот код в модуль листа "Лист1" в книге Поиск:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Option Explicit
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim res As Range
    ' Проверка на изменение значения ячейки [B2]
    If Not Intersect(Me.[B2], Target) Is Nothing Then
        With Workbooks("База данных.xlsx").Worksheets(1)
            ' Диапазон столбца со штрихкодами
            Set res = .Cells(2, 1).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row - 1, 1)
            ' Поиск штрихкода в столбце
            Set res = res.Find(Me.[B2], LookIn:=xlFormulas, LookAt:=xlWhole)
            If Not res Is Nothing Then
                ' Штрихкод найден
                Me.[B3] = res.Offset(0, 1)
                Call Nakl(res.Offset(0, 1), Me.[B5]) ' Заполнить накладную (подпрограмма)
            Else
                ' Штрихкод не найден
                Me.[B3] = ""
                MsgBox "Товар не найден в базе данных"
            End If
        End With
        Me.[B2].Select ' Вернуть выделение для ввода штрихкодов
    End If
End Sub
 
Private Sub Nakl(txt As String, cnt As String)
    Dim i As Long, b As Boolean
    With Workbooks("Накладная.xlsx").Worksheets(1)
        b = False
        For i = 1 To .Cells(.Rows.Count, 2).End(xlUp).Row
            If StrComp(txt, .Cells(i, 2)) = 0 Then ' Совпадение наименований
            If StrComp(cnt, .Cells(i, 13)) = 0 Then ' Совпадение контрагента
                If .Cells(i, 7) < .Cells(i, 10) Then ' Если товар в нужном количестве не набран
                    .Cells(i, 7) = .Cells(i, 7) + 1 ' Добавить единицу по накладной
                    b = True
                    Exit For
                End If
            End If
            End If
        Next
        If Not b Then MsgBox "Товар " & txt & " нельзя добавить в накладную"
    End With
End Sub
По идее должно работать. Все три книги при работе должны быть открыты.
0
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 13
31.10.2014, 20:25  [ТС]
Почему то не получаеться протестить
выбивает ошибку "нельзя добавить в накладную"((
Вложения
Тип файла: rar Архив WinRAR (3).rar (317.9 Кб, 108 просмотров)
0
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 13
01.11.2014, 17:58  [ТС]
и второе что заметил так это то что он ищет только одну позицию и проставляет ей количество если количество дошло до нужного то выбивает сообщение что нельзя больше добавлять. НО такой же товар есть еще чуть ниже в другого клиента но это упускается.

Добавлено через 2 часа 15 минут
mc-black, Немного переделал Ваш код и вроде все делает что мне нужно также перевел все в форму.
Посмотрите пожалуйста код может что то посоветуете добавить.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Private Sub TextBox1_Change()
 
  Dim res As Range
    ' Проверка на изменение значения ячейки [B2]
   ' If Not Intersect(Me.TextBox1, Target) Is Nothing Then
        With Workbooks("База данных.xlsx").Worksheets(1)
            ' Диапазон столбца со штрихкодами
            Set res = .Cells(2, 1).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row - 1, 1)
            ' Поиск штрихкода в столбце
            Set res = res.Find(Me.TextBox1, LookIn:=xlFormulas, LookAt:=xlWhole)
            If Not res Is Nothing Then
                ' Штрихкод найден
                Me.Label1 = res.Offset(0, 1)
            Call Nakl(res.Offset(0, 1), "pusto") ' Заполнить накладную (подпрограмма)
            Else
                ' Штрихкод не найден
                Me.Label1 = ""
                MsgBox "Товар не найден в базе данных"
            End If
        End With
 
End Sub
 
 
 
  Private Sub Nakl(txt As String, cnt As String)
  
    Dim i As Long, b As Boolean
   
    Windows("Накладная.xlsx").Activate
    b = False
   For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
      
      If Cells(i, 2) = txt Then 'Сравнение искомой детали
 
       If Cells(i, 7) <> Cells(i, 10) Then 'Если не равно то выполняем добавление единицы товара
          Cells(i, 7) = Cells(i, 7) + 1 'Увиличение на единицу количества товара
        
      Label2 = Cells(i, 13) 'Вывод имени клиента
      Label3 = Cells(i, 3) 'Вывод названия товара
      b = True
 
        Exit For
       End If
      End If
     Next i
     
If Not b Then MsgBox "Товар " & txt & " никому не нужен" 'Выводим ошибку об привешении количества товара
 
End Sub
И еще помогите разобраться с полем ввода TextBox он не хочет принимать сканированный код принимает только первую цифру из кода так как сразу начинает выполняться поиск и выбивать ошибку того что нет такого кода в базе. Нужно как то сделать так чтобы забился сканированный код и уже потом выполнялось действие поиска. Напомню что после считки кода сканер емулирует ентер думаю этим можно воспользоваться ,только пока не знаю как работать с нажатиями.
Подскажите пожалуйста.
Спасибо большое за помощь.
С Уважением Игорь

Добавлено через 1 час 46 минут
Вроде во всем разобрался.
Остались мелочи.
Спасибо
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 
        With Workbooks("База данных.xlsx").Worksheets(1) 'Открытие листа
            ' Диапазон столбца со штрихкодами
  If KeyCode = 13 Then
  
            Set res = .Cells(2, 1).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row - 1, 1) ' Поиск штрихкода в столбце
            
            Set res = res.Find(Me.TextBox1, LookIn:=xlFormulas, LookAt:=xlWhole)
      If Not res Is Nothing Then ' Штрихкод найден
                   Me.Label1 = res.Offset(0, 1)
            Call Nakl(res.Offset(0, 1), "pusto") ' Заполнить накладную (подпрограмма)
            Else  ' Если штрихкод не найден
               
                Me.Label1 = ""
                MsgBox "Товар не найден в базе данных"
        End If
    End If
End With
 
End Sub
 
 
Private Sub Nakl(txt As String, cnt As String)
  
    Dim i As Long, b As Boolean
   
    Windows("Накладная.xlsx").Activate
    b = False
   For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
      
      If Cells(i, 2) = txt Then 'Сравнение искомой детали
 
       If Cells(i, 7) <> Cells(i, 10) Then 'Если не равно то выполняем добавление единицы товара
          Cells(i, 7) = Cells(i, 7) + 1 'Увиличение на единицу количества товара
        
      Label2 = Cells(i, 13) 'Вывод имени клиента
      Label3 = Cells(i, 3) 'Вывод названия товара
      b = True
 
        Exit For
       End If
      End If
     Next i
     
If Not b Then MsgBox "Товар " & txt & " никому не нужен" 'Выводим ошибку об привешении количества товара
 
End Sub
0
 Аватар для mc-black
2786 / 718 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
05.11.2014, 09:22
Ну так исправленный Ваш код после доработки выполняет, что требуется?
В 34 строке лучше поставить знак '<', чем '<>', так как если окажется (вдруг) на единицу больше, что добавится ещё единица. 32 стоку можно записать как сравнение строк:
Visual Basic
1
If StrComp(Cells(i, 2), txt) = 0 Then 'Сравнение искомой детали
0
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 13
08.11.2014, 16:08  [ТС]
Да выполняет все что нужно)
есть маленькие нюансы но это вполне поправимо.
Думаю на протяжении использование нужно будет что то дорабатывать, то буду спрашивать у Вас.
Спасибо за помощь, без Вас бы не разобрался никогда!

П.С. Как думаете возможно ли в интернете где то найти базу данных штрихкодов автозапчастей?
0
0 / 0 / 0
Регистрация: 20.12.2014
Сообщений: 2
23.03.2015, 22:00
Доброе время суток! Извините что вклиниваюсь в Вашу тему но больше нигде толком не могу найти ответа. А у Вас то что нужно. Я в этом деле новичок и тоже хотел бы сделать считывание штрих кода в excel, а то вручную уже замучился вбивать числа. Я так понимаю что у Вас работает через форму? Не могли бы Вы помочь в написании кода. У меня есть пример там написан не большой код все что я смог понять а дальше не могу. В примере описано как хотелось бы. Заранее благодарен.
Вложения
Тип файла: rar пример1.rar (14.9 Кб, 68 просмотров)
0
 Аватар для mc-black
2786 / 718 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
24.03.2015, 11:33
1. Создайте свою собственную тему. Это можно, желательно и нужно.
2. В каком режиме работает ваш сканер штрих-кодов? Режим прерываний клавиатуры?
3. Правильно ли понимаю, что на Лист1 у вас должна формироваться приходная накладная, а Лист1 используется одновременно для учета остатка товара, как номенклатурный справочник по кодам?
4. Было бы просто замечательно, если бы текст не сопровождался грамматическими ошибками.
0
0 / 0 / 0
Регистрация: 20.12.2014
Сообщений: 2
24.03.2015, 22:00
1. Спасибо попробую.
2. Работает в режиме клавиатуры.
3. Да все верно.
4. По русскому у меня было 3. Извините.
0
0 / 0 / 0
Регистрация: 06.08.2015
Сообщений: 4
07.08.2015, 08:09
timur13 напиши в личку, спасибо
0
15 / 15 / 5
Регистрация: 01.12.2014
Сообщений: 117
07.08.2015, 11:07
Цитата Сообщение от qwert82ar Посмотреть сообщение
timur13 напиши в личку, спасибо
не стоит.

Если тема повторяет имеющуюся - тогда стоит искать ответы в ней. Если это не так -

Цитата Сообщение от mc-black Посмотреть сообщение
1. Создайте свою собственную тему. Это можно, желательно и нужно.
0
0 / 0 / 0
Регистрация: 04.08.2015
Сообщений: 3
07.08.2015, 20:35
Цитата Сообщение от сороконожка Посмотреть сообщение
не стоит.

Если тема повторяет имеющуюся - тогда стоит искать ответы в ней. Если это не так -
мне нужен пример timur13 но чучуть переделать я просто новичек заранее благодарен
0
0 / 0 / 0
Регистрация: 04.08.2015
Сообщений: 3
07.08.2015, 21:17
Помогите пожалуйста настроить работу Excel со сканером штрих-кодов. Точнее у меня есть сканер и мне нужно чтобы он работал с Excel.
Вот я немного набросал а дальше не знаю как ПОМОГИТЕ!!!!!!!!!!!!!!!!!!
Я в этом деле новичек.
вот мой пример
Вложения
Тип файла: xlsx tovari.xlsx (16.5 Кб, 37 просмотров)
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
10.08.2015, 21:04
qwert82, можете сканить. Макросов нет, формулы начиная с жёлтой строки, можете их и вверх протянуть.
Вложения
Тип файла: xlsx tovari.xlsx (19.6 Кб, 159 просмотров)
1
0 / 0 / 0
Регистрация: 04.08.2015
Сообщений: 3
11.08.2015, 22:35
не могу скачать
0
0 / 0 / 0
Регистрация: 06.08.2015
Сообщений: 4
11.08.2015, 22:43
товары я буду сканировать хаатично же остатки не сходятся
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
11.08.2015, 22:50
Т.е. скачали, но затаились?
А насчёт "не сходятся" - я в Вашу математику не вникал.
0
0 / 0 / 0
Регистрация: 06.08.2015
Сообщений: 4
11.08.2015, 23:19
скажем так лист 1 это ежедневная продажа набор штрих-кодом будет осуществлятся не по порядку и остаток товара отражается в листе 2, по завершении продажи очищается лист 1 и при этом в листе 2 должно остаться остатки

Добавлено через 2 минуты
просто наименование товара не большой не хочется приобретать там какуюто программу за большие деньги

Добавлено через 10 минут
высланный Вами пример у меня точно так же получилось вот только не получается так как я описал выше
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.08.2015, 23:19
Помогаю со студенческими работами здесь

Сканирование штрих-кодов
Как написать метод считывания штрих-кода при помощи камеры андроид моб. устройства? Насколько сложно это может быть?

Сканирование штрих кодов на ТСД
ТСД М3 Orange, платформа 8.3.9, открываю окно ПоказатьВводСтроки, ввожу строку сканированием штрих кода. Строка заполняется, после...

Сканирование штрих-кода полиса ОМС
ПОМОГИТЕ пожалуйста!) необходимо настроить считывание полиса ОМС, его штрих-кода, в любой текстовый редактор. Сам сканер на считывание...

Сканирование штрих-кода в текстовое поле в браузера
Подскажите пожалуйста, возможно ли реализовать под iOS задачу сканирования штрих-кода в текстовое поле в браузера? Немного подробнее:...

Сканер штрих кодов
Как работает сабж и 1с? Существуют какие-нибудь доки? З.Ы. требуется реализовать склад с сканером штрих кодов.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru