Автоматизация Баркодов

  • Автор темы Автор темы Sanchos
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Ответ: Нужен макрос автоматизации Баркодов?

Работа над проектом, неожиданно для самого меня, возобновилась и уже находится на стадии тестирования и внесения небольших правок. Макрос называется CardGenerator, версия №4.
Что умеет макрос?
Создавать нумерацию, а так же импортировать и размещать переменные данные в файл CorelDRAW. В качестве этих данных могут быть:
  • Текст
  • Изображения (Jpg)
  • Штрих-коды

CardGen1.png

В макросе так же предусмотрен генератор данных (числовых диапазонов).
Данные сохраняются в текстовый файл.

CardGen5.png

На этом пока что всё. Следите за новостями.
 
Ответ: Автоматизация Баркодов

Если еще актуально, то я так делаю:

Код:
striBar = "2" ' - ehto 1 цифра
Do Until Len(SNum) = 7
SNum = "0" & SNum ' - это системный номер артикула
Loop
Do Until Len(pcsQu) > 3
pcsQu = "0" & pcsQu ' - это количества
Loop
striBar = striBar & SNum & pcsQu
'For i = 2 To 12 Step 2 ' - это калькуляция по их алгоритму
'iBar = iBar + CInt(Mid(striBar, i, 1)) * 3
'Next i
'For i = 1 To 11 Step 2
'iBar = iBar + CInt(Mid(striBar, i, 1))
'Next i
'Stri = iBar
'Stri = Right(Stri, 1)
'iBar = 10 - CInt(Stri)
striBar = ean13(CStr(striBar)) ' - а это еще в довесок функция, честно спертая где-то на просторах, сама не помню где:
-------------------------------------------------------------------------------------------------------------------
Public dictSys As New Dictionary
Public arrArt()


Public Function ean13$(chaine$)
  'V 1.0
  'Paramètres : une chaine de 12 chiffres
  'Retour : * une chaine qui, affichée avec la police EAN13.TTF, donne le code barre
  '         * une chaine vide si paramètre fourni incorrect
  Dim i%, checksum%, first%, CodeBarre$, tableA As Boolean
  ean13$ = ""
  'Vérifier qu'il y a 12 caractères
  If Len(chaine$) = 12 Then
    'Et que ce sont bien des chiffres
    For i% = 1 To 12
      If Asc(Mid$(chaine$, i%, 1)) < 48 Or Asc(Mid$(chaine$, i%, 1)) > 57 Then
        i% = 0
        Exit For
      End If
    Next
    
    If i% = 13 Then
      'Calcul de la clé de contrôle
      For i% = 2 To 12 Step 2
        checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
      Next
      checksum% = checksum% * 3
      For i% = 1 To 11 Step 2
        checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
      Next
      chaine$ = chaine$ & (10 - checksum% Mod 10) Mod 10
      origBar = chaine
      'Le premier chiffre est pris tel quel, le deuxième vient de la table A
      CodeBarre$ = Left$(chaine$, 1) & Chr$(65 + Val(Mid$(chaine$, 2, 1)))
      first% = Val(Left$(chaine$, 1))
      For i% = 3 To 7
        tableA = False
         Select Case i%
         Case 3
           Select Case first%
           Case 0 To 3
             tableA = True
           End Select
         Case 4
           Select Case first%
           Case 0, 4, 7, 8
             tableA = True
           End Select
         Case 5
           Select Case first%
           Case 0, 1, 4, 5, 9
             tableA = True
           End Select
         Case 6
           Select Case first%
           Case 0, 2, 5, 6, 7
             tableA = True
           End Select
         Case 7
           Select Case first%
           Case 0, 3, 6, 8, 9
             tableA = True
           End Select
         End Select
       If tableA Then
         CodeBarre$ = CodeBarre$ & Chr$(65 + Val(Mid$(chaine$, i%, 1)))
       Else
         CodeBarre$ = CodeBarre$ & Chr$(75 + Val(Mid$(chaine$, i%, 1)))
       End If
     Next
      CodeBarre$ = CodeBarre$ & "*"   'Ajout séparateur central
      For i% = 8 To 13
        CodeBarre$ = CodeBarre$ & Chr$(97 + Val(Mid$(chaine$, i%, 1)))
      Next
      CodeBarre$ = CodeBarre$ & "+"   'Ajout de la marque de fin
      ean13$ = CodeBarre$
    End If
  End If
End Function

----------------------------------------

результат - штрихкод, только еще шрифты надо подгрузить (у меня - "Code EAN13")
 
Ответ: Автоматизация Баркодов


Не по теме:
Извиняюсь, что не в тему отвечаю, лениво на санчесовском форуме регистрироваться.
BeginCommandGroup - начало активной секции, действие которой можно отменить по undo/redo/repeat. То есть, в начале кода вставляете:
Код:
ActiveDocument.BeginCommandGroup "Create Barcode"
а перед выходом из процедуры
Код:
ActiveDocument.EndCommandGroup
В результате ваши действия между этими командами будут доступны для отмены/повторения в пункте Edit. Ну, то есть, по отработке кода будет активен пункт "Undo Create Barcode"

 
Статус
Закрыто для дальнейших ответов.