Данные в проекте модифицированы/синтетические, структура полностью соответствует реальному использованию.
Описание
Инструмент автоматизации в Excel, который создает ТТН (товарно-транспортные накладные) на основе структурированных данных.
Он заменяет ручное создание документов автоматическим созданием шаблонов.
Иллюстрация создания накладных
Задача
Упростить и ускорить создание схожих документов.
Особенно когда их много.
Пожелания:
- Наличие единого источника данных.
- Чтобы программа сама распознавала сколько документов нужно создать.
- Создание документов при нажатии на 1 кнопку.
- Возможность удаления созданных документов (тоже с кнопки).
- Видеть итоги - сколько документов создано.
Решение
Файл Excel, который создает листы по шаблону, подставляя в них данные.
По нажатию кнопки создается нужное количество уже заполненных накладных.
Каждая строка данных автоматически превращается в отдельный заполненный документ.
Результат
- автоматическое создание документов за секунды
- устранение ручного копирования (и снижение количества ошибок при заполнении)
- возможность повторного использования инструмента
Как это работает

- Значения. В сводный лист вносятся данные, которые будут подставляться в шаблон.
- Шаблон. В шаблоне внесены формулы, которые эти данные подтягивают (на основе id).
- Готовая накладная. При нажатии кнопки
Создать ТТНактивируется макрос, который:
→ считает количество строк в данных (= требуемое количество накладных)
→ берет шаблон, заполняет, переименовывает, сохраняет на новый лист
→ возвращает пользователя на главный экран
Структура файла:
Структура файла
1. Главное меню start - с кнопками для создания и удаления накладных.
Также видна информация о последнем запуске: количество созданных накладных и время.
2. Данные data - для вставки в накладные.
• каждая строка = один документ
• каждый столбец = поле для заполнения в этом документе
3. Шаблон template - определяет структуру накладной.
Данные подтягиваются с листа dataчерез формулы (ИНДЕКС + ПОИСКПОЗ).
4-n. Готовые накладные ttn_№ - каждый документ получает имя с порядковым номером id.
Автозаполнение накладной по id
Сложности и решения
- Сначала в шаблоне использовала формулы с
ВПР→ Перешла наИНДЕКС + ПОИСКПОЗ, так как это более гибко в использовании и легче менять структуру таблицы в дальнейшем. - При запуске макроса сначала удаляются ранее созданные листы, и при первом запуске удалился еще и шаблон (упс 🤭)
→ Потребовалась более устойчивая логика удаления старых файлов: только те, что содержат
ttn_*в имени
На будущее — Идеи развития
- ведение истории запусков
- экспорт в PDF
- защита структуры файла, чтобы им легко было пользоваться, но сложно что-то “сломать”
Инструменты
Excel:
- VBA (макросы)
- Формулы (поиска данных по таблице, работа с текстом, извлечение дня/месяца/года из даты)
→ Файл Excel
→ Репозиторий проекта на Github