👤Всем привет!
Недавно столкнулась с интересной задачей.
Нужно было автоматически формировать основную часть кабельного журнала в PDF. Все данные уже хранились в Excel, а на выходе должен получиться документ, оформленный по ГОСТ: рамки, шапка, обозначение документа, нумерация листов — всё как положено.
Сначала я пошла самым очевидным путём: макрос переносил данные из Excel в Word, оформлял документ, а затем сохранял его в PDF.
На небольших журналах всё работало отлично.
Но когда количество строк перевалило за 10 000😱, стало понятно, что такой подход уже не подходит. Word начинал очень долго формировать документ, и ждать каждый раз становилось совсем неинтересно.
Пришлось искать другое решение.
В итоге я вообще отказалась от Word и стала формировать готовые печатные листы прямо в Excel.
Самым сложным оказалось правильно разбить таблицу по страницам. Высота строк может меняется в зависимости от текста, поэтому нельзя просто посчитать количество строк на лист. Макросу приходится учитывать фактическую высоту каждой строки и следить, чтобы рамка не "ломалась" и не уезжала на следующую страницу.
Теперь всё работает так:
🔴данные уже находятся в Excel;
🔴пользователь указывает обозначение документа и номер первого листа;
🔴макрос автоматически разбивает журнал на листы А3;
🔴добавляет рамки, основную надпись и сквозную нумерацию;
🔴и сразу формирует готовый многостраничный PDF.
В результате получилось полностью убрать 📁 из этой цепочки и заметно ускорить ✈️создание даже очень больших кабельных журналов.
🥳 на формирование документа из 11500 строк записей ушло чуть меньше 5 минут
====================
🔵 Приходилось ли вам формировать большие документы (спецификации, кабельные журналы, ведомости, отчёты и т.п.)?
🔵 Используете Word, Excel, напрямую генерируете PDF или нашли какое-то своё решение?
🔵 Будет интересно почитать, с какими сложностями сталкивались вы и какие способы в итоге оказались самыми удачными.
🛸 Скачать файлы
====================
📖 Оглавление канала
🙃 Авторские разработки
📰 Чат для общения
Post #180
1.05K

- 🔥 8
- 👍 5