Страницы: Пред. 1 2 3 4 След.
RSS
Генерация QR кодов в эксель
 
проблему решил. знак "&" заменил на "%26" и всё заработало.
 
Нашел вроде другую компоненту. Тут вот, работает без установки дополнений.
Кто-то может помочь скрестить её с этим файликом?
Так чтобы работало без кнопок и формочек. но не через гугл, а MSBCODE964.OCX
Изменено: TorLink - 13.08.2019 13:02:23
 
Получилось немного по другому. Код выполняется по изменению ячейки.
Компоненту надо добавлять руками в инструменты разработчика.
Судя по всему на 2013м офисе и ниже не работает, т.к. просто выдаёт ошибку при добавлении.
Авось кому пригодится, чтобы не тратить 2 недели на эти 15 строк кода.)))
Изменено: TorLink - 20.08.2019 15:57:24
 
TorLink, всё хорошо, но с русскими символами не работает. Сканером выдает "Крякозябры"
 
Цитата
TorLink написал:
на 2013м офисе и ниже не работает,
Цитата
Danil920 написал:
с русскими символами не работает.
Может просто
Цитата
B.Key написал:
можно наваять свой activex
и дело в шляпе?

Самый эффективный способ не реализован.
Придется исправить. Держите COM/ActiveX.
Функция QRcodePrint на исходниках библиотеки libqrencode (емкость QR-кода составляет до 7000 цифр или 4000 символов)
Функция возвращает код ошибки. Если = 0 - значит ошибок нет, отработано штатно.
Аргументы:
1. QRcodeText - что печатаем (обязательное)
2. FileOut - куда печатаем (обязательное)
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 - версия символов (по умолчанию = 0)
9. LevelErrCorrect - уровень коррекции ошибок (0-4, по умолчанию = 1  ~15%)

Матчасть по аргументам.

Собственно всё, качаем BedvitXLL(1.0.2.4)_beta.zip, ставим нужной разрядности (Excel) надстройку, пишем код
Код
Sub QR_Generate()
Dim bVBA As Object: Set bVBA = CreateObject("BedvitCOM.VBA") 'позднее связывание
Dim OutFile As String: OutFile = "C:\QR.bmp"
Dim QRcodeText As String: QRcodeText = "https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=71988&TITLE_SEO=71988-generatsiya-qr-kodov-v-eksel&MID=1050801#message1050801"

ActiveSheet.Shapes.SelectAll: Selection.Delete
If bVBA.QRcodePrint(QRcodeText, OutFile) = 0 Then [a1].Select: ActiveSheet.Pictures.Insert (OutFile)
 
End Sub
и работаем с кириллицей и любыми знаками Юникода, в любой версии Excel.
На всякий случай прикладываю и файл Excel.
Ниже QR-код на этот пост.
Изменено: bedvit - 21.04.2020 23:33:38
«Бритва Оккама» или «Принцип Калашникова»?
 
21/04/2020 - v1.0.2.4
Изменения:
1. Появилась возможность сохранять изображения в другие форматы (в связи с чем изменилось количество аргументов), пост 35 скорректировал.
FormatImage (код в функции/формат): 0 (bmp), 1 (jpeg), 2 (gif), 3 (tiff), 4 (png) . По умолчанию 4 (png) - самый малый размер.
2. Теперь QR сохраняется в монохромное изображение. т.е. с 24 бит на пиксель ранее, до 1 бита на пиксель теперь.
В любом цвете RGB.
Итого изображение размером 1140*1140 в 24 бит .BMP - 3808 КБ, 1140*1140 в 1 бит .PNG - 2КБ (итого, почти в 2 тыс. раз меньше размер)
Для этого сначала свой велик собрал в монохромном BMP, потом решил использовать WIN API, в виде GDI+.
Продукт для меня новый, трудоемкость вышла выше, чем для остальной части работ по этой функции.

3. Побочным эффектом освоения GDI+ стал метод конвертации вышеперечисленных форматов в любых сочетаниях, пример приложил в посте 35, код прост
Код
bVBA.ConvertFormatImage File, ConvertToFile, 3 'формат

4. Добавил рамку в 4 модуля (пикселя QR) в соответствии со стандартом.
5. Дописал обработчик ошибок (в задаваемых аргументах).
Изменено: bedvit - 21.04.2020 23:41:58
«Бритва Оккама» или «Принцип Калашникова»?
 
Профи подскажите ,есть где-то видео  ,как это устанавливается и работает?
 
Видео не делал, можно посмотреть пример здесь.
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
onuff написал:
гдето видео
QR Excel
Изменено: vlad000 - 24.07.2020 15:03:12
 
Это видео через поиск тоже видел. Работает qr по интернету.
как бы запустить без библиотеки и интернета.
 
Для решения озвученного в посте 35 не нужен интернет.
Использовать проще простого:
1.Открыть (скачать) xll
2.Написать простой код из одной строки
Код
Sub QR_Generate()
If CreateObject("BedvitCOM.VBA").QRcodePrint("Здесь инфо для печати", "D:\QR.png") = 0 Then [a1].Select: ActiveSheet.Pictures.Insert ("D:\QR.png")
End Sub
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
onuff написал:
как бы запустить без библиотеки и интернета.
barcode-vba-macro-only
От зарубежный коллег есть еще макрос такой..
НО для кодов с большим количеством символов попросит оперативки и терпения в прорисовке bar-кода
 
vlad000, вопрос был по QR-коду, по вашей ссылке открывается генерация штрих-кода. Или я не так понял ваш пост?
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit написал:
о вашей ссылке открывается генерация штрих-кода.
QR в том числе, как разновидность графического кода
 
Да, действительно есть. Интересный проект. Скачал файл, посмотрю реализацию.
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit написал:
Для решения озвученного в посте 35 не нужен интернет.Использовать проще простого:1.Открыть (скачать) xll2.Написать простой код из одной строки
Сделал, как вы сказали. Изменил пути к графическим файлам на свои, но вываливается ошибка: "Run-time error 438. Object doesn't support this property or method". Можете что-нибудь посоветовать?
 
могу посоветовать использовать свойства и методы, которые поддерживаются этим обьектом
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Igor, приведите код, который вы используете.
«Бритва Оккама» или «Принцип Калашникова»?
 
Всем привет. Вот кому интересно, нашел на GitHube генератор QR кодов, с кирилицей у меня работает нормально.
Вот архив, он просто больше 300 кб.
Вот пример его работы:
 
Здравствуйте, возможно ли в генераторе  QR  из #49 сообщения сделать так, что бы qr генерировались  на основе данных из соседнего столбца? Или в каком либо другом генераторе QR офлайн в exel?
Изменено: WLM - 13.02.2021 16:14:25
 
Теперь генерация QR-кода в Excel еще проще - просто пишем формулу (функцию QRcodePrint) и дело в шляпе.

Изменено: bedvit - 13.04.2021 17:01:06
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, как то ставил Вашу dll все работало, потом переустановил систему и не хочет работать. Побольше описания как ее установить опиши
 
Тимофеев,  зайти по ссылке, скачать архив и запустить установщик (или ручками поставить нужную версию в папку ...AppData\Roaming\Microsoft\AddIns)
Всё.
Параметры/Аргументы функции QRcodePrint :
1. QRcodeText - что печатаем, строка(обязательное).
2. SizePixel - размер пикселя (не картинки, а квадратика в QR), по умолчанию 4 (минимально рекомендуемый)
3. PixelColorR =0 цвет RGB (0-255) если хотим цветную картинку (по умолчанию черный)
4. PixelColorG = 0
5. PixelColorB =0
6. VersionSymbol - версия QR кода (1-40) (по умолчанию = 0-выбор автоматом), см. ниже
7. LevelErrCorrect - уровень коррекции ошибок (0-3, по умолчанию = 1 ~15%), см. ниже
8.WidthImage - постоянная ширина (т.к. при кодировании разного размера данных размер QR меняется). Если хотим постоянный размер  - проставляем. По умолчанию "-1" (размер фактический)
9.HeightImage - постоянная высота, тоже, что и п.8
10. QuietZone - Размер в модулях зоны тишины (quiet zone — это область, отделяющая границу штрих-кода от фона и других изображений). По умолчанию = 4. Начиная с версии xll - v2.0.1.6
Результат: При удаче, возвращается закодированная в QR-коде строка, при ошибке - "#ЧИСЛО!"

При обновлении данных, функция создает новый QRcode, старый удаляется, если он находится в этой же ячейке, в которой рассчитывается функция (левый, верхний угол рисунка).
В функции можно делать любые ссылки, в т.ч. и в другую книгу.
Функционал новый, в случае багов прошу писать. Протестировал на двух ПК, разной конфигурации и разрядности Excel - полет нормальный.
Собственно это усовершенствованный вариант с поста 35

Матчасть по версия QR кода - 1-40 и коррекции ошибок 0-3 (L-H)
http://va-sorokin.blogspot.com/2011/08/qr-code-intro.html

upd: 14/04/2021 - нашел ошибку для x32 систем, поправлю, отпишу
upd: 15/04/2021 - поправил. Думаю, с детскими болезнями покончено.
Тимофеев, отпишитесь, получилось ли сейчас использовать данный функционал и вашу систему, на которой запускаете.
Изменено: bedvit - 08.09.2021 08:25:46
«Бритва Оккама» или «Принцип Калашникова»?
 
Виталий, добрый день!
Использовал вашу надстройку BedvitXLL2.0.1.3 (последнюю скачанную) в своей программе для генерации QR-кода.  Все вроде бы хорошо. Но обнаружил одну неприятную вещь - при включенной надстройке BedvitXLL - Excel сбрасывает значение глобальных переменных (заданных в главном модуле) на дефолт...

Булевы переменные сбрасываются в False, числовые в 0.  Если отключаешь надстройку, то все нормально.

С этим можно как то разобраться?  Уж очень не хочется переписывать программу(и урезать ее функционал)  из-за этого..
 
Владимир Михайлик, добрый день. Встречаюсь с таким поведением впервые. Сможете выслать небольшой пример, на условных данных? Какой разрядности и версии у вас Excel?
«Бритва Оккама» или «Принцип Калашникова»?
 
Добрый день!  Ну вот простой пример (во вложении). В главном модуле задана глобальная переменная  "restest".
В  Workbook_Open()  ей задается значение.

При "перещелкивании"  с Лист2  на Лист1  (в его Activate)   MsgBox выводит значение переменной.

При отключенной надстройке  оно выводится равным 25 (как и задано в Workbook_Open() ).

При включенной надстройке оно выводится, равным нулю..

М.б. я чего то не догоняю...
Изменено: Владимир Михайлик - 21.06.2021 09:43:36
 
Забыл про версию офиса написать - MS Office 2021 VL X86
Изменено: Владимир Михайлик - 21.06.2021 10:21:05
 
На Office 2019 тоже самое было..
Изменено: Владимир Михайлик - 21.06.2021 10:21:38
 
Проблема опознана. Завтра напишу решения.
Итак... данная ситуация возникает, когда глобальной переменной присвоено значение, а потом в референсах проекта VBA подключается какая-либо библиотека.
Почему данная проблема выявилась при использовании XLL? Потому, что XLL подключает СОМ, после присваивания значения переменной, т.к. код загрузка XLL выполняется после выполнения события Workbook_Open (и подключается библиотека СОМ для раннего связывания)
Варианты решения:
1.Через Application.OnTime присваивать значения чуть позже события Workbook_Open, к примеру через 1 сек (за это время загрузится XLL)
2.Присваивать значения переменным, после открытия XLL.
3.Отключить в XLL авто-подключение СОМ в референсах (сделал кнопку, см. рис., новую версию выложил на сайт) и при необходимости в нужном файле - включить ручками, если нужно раннее связывание, и если не нужно - пользоваться поздним и ничего не нужно подключать.
Изменено: bedvit - 22.06.2021 18:15:43
«Бритва Оккама» или «Принцип Калашникова»?
 
Виталий, спасибо за подсказку!  Попробовал варианты 3 и 1 из предложенных.
3 - авто-подключение СОМ (отключение кнопкой) работает.
Вариант 1  тоже работает (см. во вложенном примере).
На каком лучше остановиться - надо подумать..  Наверное вариант 1 (с задержкой  через Application.OnTime)  более универсальный..
Изменено: Владимир Михайлик - 24.06.2021 16:55:42
Страницы: Пред. 1 2 3 4 След.
Наверх