BedvitCOM.VBA.QRcodePrint

Печать QR-кода в Excel, Word, 1С и проч. приложениях с поддержкой COM/ActiveX.
Часть библиотеки BedvitCOM
Использованы: libqrencode + GDI


Функционал:
1. Сохранение изображения в форматы: bmp, jpeg, gif, tiff, png.
2. QR-кода сохраняется в монохромное изображение, где формат позволяет, т.е. до 1 бита на пиксель. В любом цвете RGB. К примеру размер .PNG 1140*1140 пикселей (1 бит на пиксель) - 2КБ.
3. Возможность задавать размер модуля (пикселя QR).
4. Возможность задавать цвет в RGB
5. Возможность задавать версию QR кода.
6. Возможность задавать уровень коррекции ошибок.
7. Возможность изменить толщину рамки - quiet zone (начиная с v1.0.4.8)
8. Емкость QR-кода составляет до 7000 цифр или 4000 символов
9. (Отдельно) Конвертации вышеперечисленных форматов из одного в другой

 

Параметры/Аргументы функции QRcodePrint :
1. QRcodeText - что печатаем, строка(обязательное).
2. FileOut - куда печатаем, полное имя файла - не обязательное, по умолчанию используется пользовательский "TEMP" + уникальное имя файла (GUID). Расширение теперь добавляется автоматически, если оно не указано. Если указан файл без папок - файл помещается в ту же папку, где располагается зарегистрированная библиотека.
3. FormatImageOut -  формат изображения (код в функции/формат):0 (bmp), 1 (jpeg), 2 (gif), 3 (tiff), 4 (png)-по умолчанию. (этот и остальные аргументы не обязательны)
4. SizePixel - размер пикселя (модуля), по умолчанию 4 (минимально рекомендуемый)
5. PixelColorR =0 цвет RGB если хотим цветную картинку (по умолчанию черный)
6. PixelColorG = 0
7. PixelColorB =0
8. VersionSymbol - версия QR кода (1-40) (по умолчанию = 0-выбор автоматом)
9. LevelErrCorrect - уровень коррекции ошибок (0-3, по умолчанию = 1  ~15%)
10. QuietZone - Размер в модулях зоны тишины (>=0, по умолчанию = 4).  Quiet zone — это область, отделяющая границу штрих-кода от фона и других изображений. Начиная с v1.0.4.8
11.При удаче, возвращается полное имя файла созданного изображения (в ранних версиях возвращался 0), при неудаче выводится ошибка и возвращается "Empty"

 

Добавил отдельный метод (ConvertFormatImage) конвертации вышеперечисленных форматов из одного в другой.
В случаях конвертации сторонних изображений.
Параметры/Аргументы метода ConvertFormatImage :
1. FileIn -  полное имя файла (обязательное).
2. FileOut -  полное имя файла (обязательное).
3. FormatImageOut - нужный формат (обязательное). Код в функции/формат:0 (bmp), 1 (jpeg), 2 (gif), 3 (tiff), 4 (png)

 

Пример использования:


1. Excel - открываем или устанавливаем XLL как надстройку нужной разрядности или регистрируем COM, пишем код:
[VBA]

Option Explicit

 

Sub QR_Generate()
    Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA")  'позднее связывание
    Dim fileName As String: fileName = Environ("Temp") & "\QR.png" 
'печать QR в файл (в пользовательский Temp)
    Dim convertToFile As String: convertToFile = Environ("Temp") & "\QR.tif"
    Dim QRcodeText As String: QRcodeText = "https://www.cyberforum.ru/blogs/829006/blog6514.html"

    Dim resultFileName As String

 

    'печать QR в файл (в пользовательский Temp) и вывести на лист Excel
    resultFileName = bVBA.QRcodePrint(QRcodeText, fileName)  'с аргументами по умолчанию
    ActiveSheet.Shapes.AddPicture resultFileName, False, True, 0, 0, -1, -1

 

    resultFileName = bVBA.QRcodePrint(QRcodeText, fileName, 4, 4, 255, 0, 0, 0, 1, 4) 'с нужными аргументами
    ActiveSheet.Shapes.AddPicture resultFileName, False, True, 200, 0, -1, -1
 
     'Конвертировать формат изображения
    bVBA.ConvertFormatImage fileName, convertToFile, 3  'формат (tiff), см. в описании
End Sub


[/VBA]

 

Код в одну строку:

[VBA]
Sub QR_Generate_Fast()
    ActiveSheet.Shapes.AddPicture CreateObject("BedvitCOM.VBA").QRcodePrint("Здесь инфо для печати",
Environ("Temp") & "\QR.png"), False, True, 0, 0, -1, -1
End Sub
[/VBA]


2. 1C - регистрируем COM нужной разрядности (можно под пользователем), далее код (по аналогии с Excel)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Полное описание в блоге.

Яндекс.Метрика