
QR-код в Excel — 5 рабочих способов
15 мин чтения
Склад хранит 2 000 позиций — каждую единицу нужно промаркировать. Бухгалтерия формирует опись основных средств с инвентарными номерами. HR собирает штатное расписание с QR на личные карточки. Всё это — Excel. Разберём пять рабочих способов: от «скачал и вставил вручную» до «Power Query генерирует QR из каждой ячейки автоматически».
Зачем QR в Excel — 5 кейсов
Excel остаётся главным инструментом учёта в российском МСБ. По данным Microsoft 2025 года, более 70% российских компаний используют Excel как основную таблицу для складских операций. QR-код здесь — не украшение, а рабочий инструмент.
Опись имущества
Инвентаризация: таблица Excel со столбцами «Инвентарный номер», «Наименование», «QR». QR ведёт на карточку объекта в системе учёта — комиссия сканирует и сразу видит паспортные данные, стоимость, дату ввода. Без QR инвентаризация занимает 3–4 дня, с QR — 4–6 часов.
Управление складом
Кладовщик маркирует паллеты. На каждом — QR, в нём — артикул, партия, дата поступления. Excel-таблица с QR позволяет распечатать этикетки прямо из книги: строки данных + столбец с QR-изображениями. Формула =IMAGE() или VBA-макрос генерирует QR для каждой строки за секунды.
Билеты и пропуска на мероприятие
Организатор конференции делает список участников в Excel: ФИО, должность, компания, уникальный ID. VBA-макрос генерирует QR для каждого участника — на входе сканируют QR, система сверяет с базой. Ни одна конференция не обходится без этого сценария.
Штатное расписание
HR-директор хочет, чтобы в распечатанном штатном расписании рядом с каждой должностью был QR на профиль сотрудника во внутренней системе. Excel + QR — простейший способ без интеграции с HR-платформой.
Инвойсы и акты
Бухгалтерия формирует акты в Excel-шаблонах: ИНН контрагента, сумма, реквизиты. QR в нижнем углу ведёт на страницу оплаты через СБП или в личный кабинет. Больше не нужно переписывать реквизиты вручную — сканируешь и платишь.
Способ 1: онлайн-сервис и вставка картинки в ячейку
Самый понятный вариант — без кода, без настроек. Подходит для 1–10 QR в одной книге.
- Сгенерируйте QR. Откройте генератор QR-кодов QRkoder, введите данные (ссылку, текст, ИНН — всё что угодно), скачайте PNG 1000×1000 или SVG. Excel 2019/2021/365 работает с обоими форматами; Excel 2016 — только PNG.
- Вставьте в ячейку. Выделите ячейку, где нужен QR. «Вставка» → «Рисунки» → «Это устройство» (Excel 2021/365) или «Рисунок» (Excel 2016–2019). Выберите скачанный файл.
- Подгоните под ячейку. Перетащите уголок картинки до нужного размера. Минимум — 2×2 см для сканирования с телефона.
- Закрепите. Правый клик на картинке → «Размер и свойства» → вкладка «Свойства» → выберите «Перемещать и изменять размеры вместе с ячейками». Без этого QR «убежит» при сортировке — см. раздел «Привязать QR к ячейке».
Формат имеет значение. PNG 1000×1000 работает везде, при печати на А4 выглядит чётко. SVG — вектор, масштабируется без потерь, поддерживается в Excel 2019+. DPI для печати: 300 DPI минимум, 600 — для типографской печати этикеток. QRkoder отдаёт оба формата бесплатно без регистрации.
Минусы способа: вручную для каждой позиции. 100 строк = 100 операций. Для массовой генерации — способы 3, 5, 6.
Способ 2: формула =IMAGE() с qrkoder API (Excel 365+)
Функция =IMAGE() появилась в Excel 365 в конце 2022 года. Она загружает картинку по URL прямо в ячейку — без скачивания, без макросов. Достаточно составить URL к API генератора, и QR появится в ячейке автоматически.
Формула
Данные для QR — в столбце A (ссылки, инвентарные номера, ИНН). В ячейку B2 вставьте:
=IMAGE("https://qrkoder.ru/api/v1/qr/png?data="&ENCODEURL(A2)&"&size=400&ecl=Q")
Растяните вниз на все строки. Excel загружает QR в реальном времени; при изменении A2 QR пересчитывается сам.
Параметры API: data — данные (ENCODEURL для спецсимволов); size — пиксели (400 хватает для ячейки); ecl — уровень коррекции L/M/Q/H (для склада и печати — Q или H); format — png или svg.
Ограничения IMAGE()
- Только Excel 365 (подписка). Excel 2016–2021 функцию не поддерживают.
- Нужно интернет-соединение при каждом открытии книги — Excel обновляет картинки.
- При офлайн-работе картинки отображаются как последние кешированные.
- Функция не работает в Excel Online через браузер — только десктопное приложение.
Если у вас Excel 2016–2021 — переходите к способу 3 (VBA) или 4 (надстройка). Подробнее о создании QR через API — пакетная генерация через REST API.
Способ 3: VBA-макрос для массовой генерации
VBA работает во всех версиях Excel от 2010. Макрос обходит строки таблицы, для каждой формирует URL API, загружает PNG и вставляет картинку в указанный столбец. 500 строк — 3–5 минут.
Подготовка
Включите вкладку «Разработчик»: «Файл» → «Параметры» → «Настроить ленту» → поставьте галку «Разработчик». На новой вкладке нажмите «Visual Basic» (Alt+F11). В редакторе: «Вставить» → «Модуль». Вставьте код:
Готовый VBA-код
Sub GenerateQRCodes()
' Макрос генерирует QR-коды для всех строк таблицы.
' Столбец A — данные (ссылка, текст, ИНН и т.д.)
' Столбец B — сюда вставляются QR-изображения
' Начало данных — строка 2 (строка 1 = заголовок)
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim cellData As String
Dim apiURL As String
Dim targetCell As Range
Dim pic As Picture
Dim cellWidth As Double
Dim cellHeight As Double
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Удалить старые QR-изображения в столбце B (необязательно при повторном запуске)
Dim shp As Shape
For Each shp In ws.Shapes
If shp.TopLeftCell.Column = 2 Then
shp.Delete
End If
Next shp
' Установить высоту строк для QR
For i = 2 To lastRow
ws.Rows(i).RowHeight = 80 ' ~2,8 см при масштабе 100%
Next i
' Установить ширину столбца B
ws.Columns("B").ColumnWidth = 12 ' ~2,5 см
Application.ScreenUpdating = False
For i = 2 To lastRow
cellData = Trim(ws.Cells(i, 1).Value)
If Len(cellData) = 0 Then GoTo NextRow
' Формируем URL API QRkoder
apiURL = "https://qrkoder.ru/api/v1/qr/png?data=" & URLEncode(cellData) & "&size=400&ecl=Q"
Set targetCell = ws.Cells(i, 2)
cellWidth = targetCell.Width
cellHeight = targetCell.Height
' Вставляем картинку по URL
On Error Resume Next
Set pic = ws.Pictures.Insert(apiURL)
On Error GoTo 0
If Not pic Is Nothing Then
' Размещаем картинку в ячейке
With pic
.Left = targetCell.Left + 2
.Top = targetCell.Top + 2
.Width = cellWidth - 4
.Height = cellHeight - 4
' Привязать к ячейке: перемещать вместе с ячейкой
.Placement = xlMoveAndSize
.PrintObject = True
.Name = "QR_" & i
End With
Set pic = Nothing
End If
NextRow:
Next i
Application.ScreenUpdating = True
MsgBox "Готово! QR-коды сгенерированы для " & (lastRow - 1) & " строк.", vbInformation
End Sub
Function URLEncode(ByVal str As String) As String
' Кодирует строку для передачи в URL (RFC 3986)
Dim i As Long
Dim charCode As Long
Dim ch As String
Dim result As String
result = ""
For i = 1 To Len(str)
ch = Mid(str, i, 1)
charCode = AscW(ch)
Select Case charCode
' Незарезервированные символы по RFC 3986
Case 48 To 57 ' 0-9
result = result & ch
Case 65 To 90 ' A-Z
result = result & ch
Case 97 To 122 ' a-z
result = result & ch
Case 45, 46, 95, 126 ' - . _ ~
result = result & ch
Case Else
' Остальные — кодируем
If charCode <= 127 Then
result = result & "%" & Right("00" & Hex(charCode), 2)
Else
' Многобайтовые символы (кириллица): UTF-8
Dim utf8bytes() As Byte
utf8bytes = StrConv(ch, vbFromUnicode)
Dim b As Byte
For Each b In utf8bytes
result = result & "%" & Right("00" & Hex(b), 2)
Next b
End If
End Select
Next i
URLEncode = result
End Function
Запуск и настройка
Нажмите F5 или «Разработчик» → «Макросы» → «GenerateQRCodes» → «Выполнить». Для настройки под свой файл измените константы в начале кода: столбец с данными (по умолчанию A), столбец для QR (по умолчанию B), строку начала данных (по умолчанию 2).
Доработки: если данные не в A, замените ws.Cells(i, 1) на нужный столбец. Для вставки QR не в B, а в другой столбец — замените все 2 в «Column» на нужный номер. Параметры API (размер, уровень коррекции) меняются в строке apiURL =.
Для регулярной генерации — автоматизируйте. Подробная инструкция по созданию QR-кодов и типам данных — в отдельном руководстве.
Способ 4: надстройка/плагин QR Code Generator
В каталоге Microsoft AppSource есть несколько надстроек для генерации QR прямо в Excel — без переключения в браузер. Самые популярные в 2026 году: «QR4Office» и «QR Code Generator» от AfalinaSoft.
Установка
- Вкладка «Вставка» → «Получить надстройки» (Excel 2021/365) или «Мои надстройки» → «Магазин» (Excel 2019).
- В поиске введите
QR code→ выберите «QR4Office» → «Добавить». - Надстройка появится в боковой панели. Введите данные, выберите тип QR (URL, Email, SMS, Text), установите размер — нажмите «Insert».
QR вставляется как обычная картинка. Повторить для каждой строки. Для 10–30 позиций — быстрее, чем скачивать файлы отдельно.
Ограничения надстроек
- Массовая генерация не предусмотрена. Каждый QR — отдельное действие в панели. 100 строк = 100 нажатий.
- Дизайн базовый. Цвет модулей — да. Логотип, скругление, градиент — только в платных версиях.
- Работает только онлайн. Надстройки обращаются к серверу разработчика.
- Excel 2016 не поддерживается или поддерживается частично — AppSource в старых версиях урезан.
Оптимально: Excel 2019/2021/365, 10–30 разных QR в одной книге, дизайн неважен. Для 50+ позиций — VBA (способ 3) или Power Query (способ 5).
Способ 5: Power Query + REST API для динамической генерации
Power Query умеет делать HTTP-запросы. Это значит: можно передать список данных в API генератора QR, получить список URL изображений и вывести их в таблицу. При обновлении данных QR пересоздаются автоматически.
Как это работает
Power Query не вставляет картинки в ячейки напрямую — он работает с данными. Поэтому результат Power Query + API — столбец с URL изображений. Дальше их отображает формула =IMAGE() (Excel 365) или VBA-макрос (Excel 2016+).
M-запрос в Power Query
«Данные» → «Получить данные» → «Из других источников» → «Пустой запрос». В редакторе Power Query нажмите «Расширенный редактор» и вставьте:
let
// Источник: таблица Excel "Товары" со столбцом "Артикул"
Source = Excel.CurrentWorkbook(){[Name="Товары"]}[Content],
// Добавляем столбец с URL для QR
AddQrUrl = Table.AddColumn(Source, "QR_URL", each
"https://qrkoder.ru/api/v1/qr/png?data="
& Uri.EscapeDataString(Text.From([Артикул]))
& "&size=400&ecl=Q"
),
// Опционально: получить бинарные данные изображения (для проверки доступности)
// AddQrCheck = Table.AddColumn(AddQrUrl, "QR_Status", each
// try Web.Contents([QR_URL]) then "OK" otherwise "Error"
// ),
// Выводим только нужные столбцы
Result = Table.SelectColumns(AddQrUrl, {"Артикул", "Наименование", "QR_URL"})
in
Result
Power Query добавит столбец QR_URL. Рядом поставьте =IMAGE([@QR_URL]) — QR появятся в ячейках. При нажатии «Обновить всё» данные и QR обновляются вместе.
Подходит, когда источник данных — внешняя база (SharePoint, SQL Server, другая книга) и QR должны пересоздаваться при каждом обновлении. Прайс из ERP обновляется ежедневно — один раз настроил запрос, дальше нажимаешь «Обновить».
Привязать QR к ячейке — чтобы не «убегал» при сортировке
Это самая частая жалоба: «вставил QR, отсортировал таблицу, QR остался на старом месте». Причина — по умолчанию картинки в Excel «плавают» над листом и не привязаны к ячейкам.
Ручная привязка
- Правый клик на изображении QR → «Размер и свойства».
- Вкладка «Свойства».
- Выберите «Перемещать и изменять размеры вместе с ячейками» (Move and size with cells).
Теперь при сортировке QR следует за своей строкой. При удалении строки — удаляется вместе с ней.
Привязка через VBA (для всех картинок сразу)
Sub BindAllPicturesToCells()
' Привязывает все картинки листа к их текущим ячейкам
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Placement = xlMoveAndSize
End If
Next shp
MsgBox "Готово: " & ActiveSheet.Shapes.Count & " изображений привязаны к ячейкам."
End Sub
Запустите один раз — все QR привяжутся к текущим позициям. После повторной генерации через макрос из способа 3 привязка устанавливается автоматически (параметр .Placement = xlMoveAndSize уже включён в код).
Важный нюанс: привязка «Перемещать и изменять размеры» означает, что при изменении высоты строки или ширины столбца QR тоже растянется. Если нужен фиксированный размер — выберите «Перемещать, но не изменять размеры». Это сохранит пропорции при сортировке, но QR выйдет за пределы ячейки при сужении столбца.
Печать листов с QR — масштаб и уровень коррекции
Распечатали таблицу — QR не сканируется. Знакомая ситуация. Три основных причины и как их устранить.
Масштаб 100%
Excel по умолчанию масштабирует лист при печати, чтобы уместить в страницу. Если таблица широкая — Excel сожмёт QR до 60–70% от исходного размера. При 2×2 см QR в ячейке после сжатия остаётся 1,2–1,4 см — слишком мало. Фикс: «Разметка страницы» → «Масштаб» → установите вручную 100% или используйте «Параметры страницы» → «Разместить не более чем на 1 странице» только по горизонтали, оставив «Вертикально» пустым.
Уровень коррекции ошибок ECL Q или H
Для производственной печати — складских этикеток, пропусков, инвентарных карточек — используйте ECL Q (25%) или H (30%). При загрязнении, помятости или частичном перекрытии QR всё равно сканируется. В параметрах API добавьте &ecl=Q или &ecl=H. Про уровни коррекции подробнее — в глоссарии: что такое QR-код.
Отключить сжатие изображений
Excel сжимает картинки при сохранении .xlsx. PNG 1000×1000 превращается в 250×250. Фикс: «Файл» → «Параметры» → «Дополнительно» → «Размер и качество изображения» → снимите галку «Сжимать изображения в файле». Применяйте глобально для всей книги.
Обязательная проверка перед тиражом
Распечатайте тестовый лист, просканируйте 3 разными смартфонами (iOS и Android). Все три за 1–2 секунды — можно печатать тираж. Хоть один не читается — увеличьте QR или смените ECL. Для промышленного тиража (этикетки на складе) — использовать PNG 600 DPI или SVG.
Другие сценарии использования QR в бизнесе — 15 сценариев QR для бизнеса.
Частые вопросы
Формула =IMAGE() не работает в моём Excel — что делать?
Функция =IMAGE() доступна только в Excel 365 (подписка Microsoft 365, сборки с конца 2022 года). В Excel 2016, 2019 и 2021 (разовая покупка) её нет. Проверьте: «Файл» → «Учётная запись» — должно быть «Microsoft 365». Если старая версия — используйте VBA-макрос из способа 3 (работает с Excel 2010) или надстройку QR4Office из AppSource (Excel 2019+). В Excel Online через браузер функция тоже не работает — только десктопное приложение.
Как сгенерировать QR для всего списка из 1000 строк?
Три варианта. VBA-макрос из способа 3: вставьте код, запустите «GenerateQRCodes» — 1000 строк за 5–10 минут, работает в фоне. Формула =IMAGE() в Excel 365: протяните на 1000 строк, Excel загружает параллельно — 2–4 минуты. Пакетная генерация через REST API: API QRkoder поддерживает batch до 10 000 QR, получите архив PNG и разложите по строкам. Для склада — =IMAGE() плюс отключённое сжатие изображений.
QR в Excel не сканируется после распечатки — в чём причина?
По убыванию частоты: (1) Сжатие — «Файл → Параметры → Дополнительно → снять галку Сжимать изображения». (2) Масштаб печати — установите 100%, иначе Excel сожмёт QR. (3) Маленький QR — минимум 2×2 см. (4) Низкий ECL — замените ecl=L на ecl=Q. (5) Принтер в экономрежиме — для склада только полный картридж. (6) QR поверх цветной заливки — вынесите в столбец с белым фоном.
Как вставить QR, чтобы он не смещался при сортировке?
По умолчанию картинки «плавают» над листом. При сортировке строки меняются, картинки остаются на месте. Фикс: правый клик на QR → «Размер и свойства» → «Свойства» → «Перемещать и изменять размеры вместе с ячейками». Если QR уже много — запустите VBA-макрос BindAllPicturesToCells из раздела «Привязать QR к ячейке», он привяжет все картинки листа за секунду.
Можно ли сделать динамический QR в Excel?
Да. В Excel 365 формула =IMAGE() обновляет QR автоматически при изменении ячейки с данными. Второй вариант — VBA-обработчик события Worksheet_Change: при изменении A2 запускается генерация нового QR. Третий — динамический QR через QRkoder: картинка статична, но целевая страница меняется в личном кабинете без перепечатки. Удобно когда тираж уже роздан, а ссылка изменилась.
Создайте QR через REST API для Excel
Динамические QR в каждой ячейке через формулу =IMAGE().
Создать QR-код →REST API · CSV · до 10000 QR