QRkoder
QR-код в Excel — 5 рабочих способов
БлогQRkoder3

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 в одной книге.

  1. Сгенерируйте QR. Откройте генератор QR-кодов QRkoder, введите данные (ссылку, текст, ИНН — всё что угодно), скачайте PNG 1000×1000 или SVG. Excel 2019/2021/365 работает с обоими форматами; Excel 2016 — только PNG.
  2. Вставьте в ячейку. Выделите ячейку, где нужен QR. «Вставка» → «Рисунки» → «Это устройство» (Excel 2021/365) или «Рисунок» (Excel 2016–2019). Выберите скачанный файл.
  3. Подгоните под ячейку. Перетащите уголок картинки до нужного размера. Минимум — 2×2 см для сканирования с телефона.
  4. Закрепите. Правый клик на картинке → «Размер и свойства» → вкладка «Свойства» → выберите «Перемещать и изменять размеры вместе с ячейками». Без этого 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.

Установка

  1. Вкладка «Вставка» → «Получить надстройки» (Excel 2021/365) или «Мои надстройки» → «Магазин» (Excel 2019).
  2. В поиске введите QR code → выберите «QR4Office» → «Добавить».
  3. Надстройка появится в боковой панели. Введите данные, выберите тип 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 «плавают» над листом и не привязаны к ячейкам.

Ручная привязка

  1. Правый клик на изображении QR → «Размер и свойства».
  2. Вкладка «Свойства».
  3. Выберите «Перемещать и изменять размеры вместе с ячейками» (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

QR-генератор · Динамический QR · API сокращения и QR.

Создавайте QR-коды бесплатно

Динамические QR-коды с аналитикой, дизайном и без ограничений по сканированиям.

Начать бесплатно