Filldocuments надстройка для заполнения документов word и excel по шаблонам
АВТОМАТИЗАЦИЯ ЗАПОЛНЕНИЯ ДОКУМЕНТОВ, ЧАСТЬ 4: ПЕРЕНОС ДАННЫХ В WORD
В предыдущих статьях цикла "Автоматизация заполнения документов" я рассказал о том, как сформировать пользовательский интерфейс приложения, организовать проверку вводимых данных и получить число прописью без использования кода VBA. В этой, заключительной статье речь пойдет о волшебстве - переносе всех необходимых значений из рабочей книги Excel в документ Word. Давайте я покажу Вам то, что должно получиться в итоге:
Описание механизма
Для начала в общих чертах опишу, каким именно образом будет происходить перенос данных в документ Word. Прежде всего, нам понадобится шаблон документа Word, содержащий всю разметку, таблицы и ту часть текста, которая будет оставаться неизменной. В этом шаблоне необходимо определить места, в которые будут подставлены значения из рабочей книги Excel, - удобнее всего это сделать с помощью закладок. После этого необходимо упорядочить данные Excel таким образом, чтобы обеспечить соответствие шаблону Word, ну и в последнюю очередь - написать саму процедуру переноса на VBA.
Создание шаблона документа Word
Тут все предельно просто - создаем обычный документ, набираем и форматируем текст, в общем, добиваемся того, чтобы получить необходимую форму. В тех местах, куда необходимо будет подставить значения из Excel нужно создать закладки. Это делается следующим образом:
- Для удобства поддержки напечатать в нужном месте название закладки. Я еще и заключил названия в угловые скобки, так что получилось, например, вот так: для закладки, содержащей дату документа.
- Выделить все название закладки (в моем случае вместе с угловыми скобками), перейти на вкладку "Вставка" и нажать кнопку "Закладка":
Таким образом нужно будет создать все закладки, то есть отметить все места, куда будут вставлены данные из Excel. Получившийся файл нужно сохранить как "Шаблон MS Word" с помощью пункта меню "Файл" -> "Сохранить как. ".
Подготовка данных Excel
Я решил для удобства поместить все данные, которые необходимо перенести в документ Word, на отдельном рабочем листе с названием Bookmarks - закладки. На этом листе два столбца: в первом содержатся названия закладок (в точности так, как они названы в документе Word), а во втором - соответствующие значения, подлежащие переносу.
Часть этих значений получена напрямую из листа ввода данных, а часть - из вспомогательных таблиц, расположенных на листе Support . В этой статье я не буду разбирать формулы, рассчитывающие нужные значения, если что-то будет непонятно - задавайте вопросы в комментариях.
На этом этапе важно правильно указать все названия закладок - от этого зависит правильность переноса данных.
Процедура переноса
- Код выполняется в рабочей книге Excel, данные передаются в Word по одному значению за раз и сразу же размещаются в документе.
- Код выполняется в отдельном документе Word, все данные передаются из Excel одним пакетом.
С точки зрения скорости выполнения, особенно при большом количестве закладок, второй вариант выглядит гораздо привлекательнее, однако требует более сложных действий. Именно его я и использовал.
- Создать шаблон документа Word с поддержкой макросов. В этом шаблоне будет содержаться выполняемый код на VBA.
Почему нужно создать именно шаблон? Таким образом можно защитить программный код от неумышленного изменения. Дело в том, что каждый раз при открытии шаблона создается новый файл Word, сохранить который поверх существующего шаблона просто так не получится. Сам шаблон при этом остается неизменным.
Текст процедуры я приводить в статье не буду - его можно легко посмотреть в файле FillDocument.dotm , расположенном в папке Template в архиве с примером.
Как же воспользоваться всем этим для решения именно Вашей задачи?
Понимаю, что на словах это все выглядит очень просто, но что же получается на деле? Я предлагаю Вам просто воспользоваться уже готовым вариантом. Скачайте архив с примером, в рабочей книге Excel нажмите комбинацию клавиш Alt+F11, чтобы открыть редактор Visual Basic и прочитайте все мои комментарии к программе. Для того, чтобы изменить программу под свои нужды Вам понадобится всего лишь изменить значение нескольких констант, они вынесены в самое начало программы. Весь текст программы Вы можете свободно скопировать в свой проект.
Структура архива
Основной файл - рабочая книга Excel с названием "Создание подтверждений". В этой рабочей книге 4 рабочих листа, из которых отображаются только два: "Input" - лист ввода данных и "Database" - архив всех введенных документов.
В папке Templates находятся шаблоны документов Word. Один из них - шаблон, содержащий программу заполнения закладок, а второй - форма для заполнения. Вы можете использовать без изменений шаблон с программой, но форму для заполнения, естественно, придется переделать в соответствии с Вашими нуждами.
Как переработать пример "под себя"?
- Подготовить шаблон документа Word, который необходимо заполнить. Создать в нем все необходимые закладки и сохранить как "шаблон MS Word".
- Скопировать в папку с подготовленным шаблоном файл FillDocument.dotm из архива, приложенного к этой статье. Этот файл отвечает за заполнение закладок шаблона, и в нем ничего менять не нужно.
- Подготовить рабочую книгу Excel для ввода данных. Вам решать, будет ли она обладать каким-либо "продвинутым" пользовательским интерфейсом и осуществлять разные хитрые расчеты. Главное, чтобы в ней содержался рабочий лист с таблицей соответствия имени закладки в шаблоне Word и значения, которое нужно подставить.
- Вставить в подготовленную рабочую книгу код программы на VBA из файла-примера. Заменить все константы в соответствии с Вашим проектом.
- Протестировать правильность работы.
- Активно пользоваться!
Вместо заключения
Статья, если честно, получилась какой-то путаной и, наверное, не очень понятной, поэтому я жду Ваших вопросов по поводу работы кода, формул или механизма в целом в комментариях к ней.
Другие статьи из цикла:
По этой ссылке Вы перейдете на сайт Microsoft SkyDrive, где Вам будет предложено скачать файл Confirm.rar - это и есть архив приложения.
В этом разделе сайта описан процесс настройки программы заполнения документов и рассылки почты под различные задачи.
Выбирая интересующие пункты меню в столбце слева, вы можете найти интересующую вас информацию.
Разделы справки:
Комментарии
Добрый день! Когда будет реализована функция вертикальной таблицы?
Когда будет реализована возможность выбора варианта вертикальной таблицы (очень много данных для заполнения, удобнее расположить их вертикально).
В настройка программы, на вкладке «Дополнительно», найдите и включите пункт «Отображать подменю Дополнительно на панели инструментов».
Из этого меню будет доступно открытие инструкции.
Здравствуйте! Как снова открыть инструкцию которая в начале появляется? Закрыл и не могу снова открыть((
Здравствуйте, Алекс.
Либо маска имени файла неверно задана (файл получает имя открытого файла в Excel), либо шаблон не закрыли перед запуском формирования документов
Здравствуйте, у меня шаблон в excel, хочу чтобы в excel и сохранялся документ, все проходит, написано, что сохранено, но по факту в папке нет документа. Как быть?
Подскажите как запустить макрос на MS Exele Mac
Игорь, добрый день! Уточните, пожалуйста, по Unisender, через него теперь нельзя отправлять, используя ваш скрипт? Или можно, но есть какие-то ограничения?
Вывод на печать только по некоторым шаблонам, - возможен (это описано в справке про коды полей)
Вывод в один файл, - только для шаблонов формата эксель (для word такого нет)
Здравствуйте.
Возможна ли настройка сохранения не в отдельные файлы, в один общий?
Возможна ли настройка "автоматического вывода на печать" только на определенные шаблоны, а не на все сразу??
Добрый день, у меня Эксель не активирован, не открывается ничего. Это от того, что он не активирован?
Здравствуйте, Александр.
1. Если отправляете через Юнисендер, там время зависит от объема вложений.
Если не использовать Юнисендер, тормозов быть не должно.
2. по Unisender поддержки нет (функционал этот не поддерживается более, оставлен только в целях совместимости)
Отправляйте через Outlook, и проблем не будет
Здравствуйте. два вопроса
1) в последнее время скрипт стал очень медленно работать, одно письмо с формированием pdf из word и вкладыванием в письмо занимает 3-5 минут. это норм?
2)без вложения письма отправляются очень быстро, unisender принимает только 50 писем в минуту. подскажите каким образом сделать паузу? чтобы отправлять максимум 50 писем в минуту
Алексей, напишите мне в Скайп, решим проблему.
здравствуйте, с некоторых пор (может обновления системы или самого офиса - у меня лицензия) перестали подставляться данные в файлы *.xls (происходит зависаний excel и ничего не формируется), ранее проблем не возникало. *.doc обрабатываются без проблем
Надстройка FillDocuments обновлена до версии 3.3.6
Можно ли распечатать сразу несколько копий документов. Для договоров было бы очень неплохо
Шаблон - это обычный файл эксель или Ворд. Моя программа не имеет никакого отношения к процессу вставки каких-либо данных в ваш файл шаблона (можете вставлять что угодно)
Добрый день, есть ли ограничение по количеству или содержанию (формату) для вставки в шаблон. Столкнулся с проблемой, что буфер обмена не может вставить объект (таблицу. Пишет, что не поддерживаемый буфером обмена формат. А там для вставки табличка в три строки. Подскажите, пожалуйста.
Здравствуйте, Павел.
Возможно, перемудрили с настройками программы, - сбросьте их (для этого есть кнопка снизу на форме настроек), и попробуйте снова
Добрый день!
При создании документов выдает ошибку:
Создание документов для строки 2 таблицы Excel
========================================
Создание документа 1 из 2
Шаблон: . \Справка.xlsx
Сохранение созданного файла: . \Справка
Результат: ОШИБКА
========================================
Создание документа 2 из 2
Шаблон: . \Счёт.xls
Сохранение созданного файла: . \Счёт
Результат: ОШИБКА
========================================
Результаты работы программы:
Использовано шаблонов: 2
Обработано записей в таблице Excel: 1
Создано файлов: 0
Не удалось создать файлов: 2
Программу использую в тестовом режиме
Елена, не могу ответить, - ваш вопрос не понятен
Добрый день! Подскажите пожалуйста. Есть проблема: из файла - "Документы" хочу перенести текст в шаблон, так чтобы текст был с подчеркиванием каждой строки.Как это сделать?
Владимир, да, возможна.
Здравствуйте, возможна ли отправка каждой строки таблицы как отдельного письма по шаблону на один единственный адрес электронной почты? Очень нужно для работы с сервисом Контур.Закупки.
Нет, макросы в Office могут использовать только одно ядро процессора.
Есть ли возможность использовать все ядра процессора при генерации word файлов?
Мария, ответил вам на почту.
Уважаемый Игорь!
Помогите пожалуйста (ранее написала - но на сайте не вижу свой комментарий)
Купила лицензию на 2 компьютера
На 1м все отлично работает, на 2м не хочет
1) Не формирует письма. При выделении формирует только письмо первое в файле
2) Функции вставляются через окно формул. Так я не могу смешать формулы и сделать ФамилияИО(дательный)
3) В инициалах ошибки при использовании формулу Фамилия ИО (Только одна буква высвечиввается например)
Уважаемый Игорь! Добрый день!
Помогите пожалуйста!
Ссылка на докупку активаций есть в личном кабинете, и в уведомлении с сайта о покупке программы.
Ну или просто можно нажать кнопку Купить на странице программы, и выбрать опцию Приобрести дополнительные активации
Здравствуйте
По ссылке https://excelvba.ru/programmes/FillDocuments указано, что "Если нужны будут дополнительные активации, их можно будет в любой момент приобрести по 500 рублей за каждый дополнительный компьютер."
Нужно приобрести лицензию на дополнительный компьютер
Покупали на 2 компьютера лицензию
1 комп = в ремонте
2-й компьютер = личный ноутбук специалиста, который уже с нами не работает
Как докупить 3-й компьютер лицензию?
Обновите программу до последней версии, — только что залил обновление, решающее эту проблему.
Добрый день!
После работы в тестовом режиме, сбилась функция копирования адреса заголовка по двойному клику. Вставляется символ, вместо адреса ячейки. Прошу подсказать, как решить проблемку?
Каждому хоть раз в жизни приходилось заполнять договоры, шаблоны, бланки и прочие документы. Конечно, если это разовая операция, то можно потратить время и кропотливо заполнить нужную информацию. Но когда эта операция ежедневная, то хочется автоматизировать эту рутинную работу. Ведь каждый день заполняются одни и те же поля, постоянно допускаются ошибки, часть информации указывается по несколько раз в одном документе. Наш новый продукт нацелен как раз на решение этих задач.
Возможности программы
Программа представляет собой расширение функционала в Excel. После установки на ленте меню появится отдельная вкладка для автоматизации заполнения документов. Почему Excel? Все просто - это самый привычный формат для пользователя по ведению реестра и заполнению различных форм. Не нужно обучаться новому функционалу и осваивать сложные программы, все необходимое уже есть. Вы продолжаете как обычно заполнять форму Excel но плюс к этому получаете возможность автоматически генерировать документы. Вот так выглядит лента меню в программе:
Пример создания форм заполнения
Создавайте простые формы для заполнения прямо в Excel. Просто укажите программе какие ячейки (поля) вы хотите вставлять в отчеты. Вы также можете создавать сложные формы для заполнения документов с различными условиями. Например, договоры, где различные формулировки должны вставляться при определенных условиях. Подробнее про создание форм в Excel.
Вставка функций
Часто при заполнении мы указываем числа прописью или склоняем фамилии или должности по падежам. Теперь вы сможете вставить функцию в Excel и она автоматически сделает это за вас. Вам потребуется один раз указать ФИО, а программа сама просклоняет ее и подготовит к вставке в документ. Аналогично с должностями или другими фразами. Программа склоняет фразы по всем падежам русского языка.
Необходимо вставить сумму, количество или дни прописью - тоже не проблема в программе имеются функции для записи прописью любых данных.
Заполнение шаблона
После того, как форма для заполнения документа готова необходимо создать шаблон документа. В шаблоне нужно расставить так называемые метки, в которые программа будет вставлять данные. Например, , , и так далее. Для простоты мы подготовили примеры готовых документов. Вы можете создавать свои метки в любых количествах. В этой статье можно посмотреть процесс создания шаблона документа.
После того как шаблон готов, данные в него вставляются из формы Excel всего одной кнопкой.
Заполнение нескольких документов
Как правило, единовременно необходимо заполнить сразу несколько документов. Например договор и счет на аванс, акт выполненных работ и счет-фактуру и так далее. В программе предусмотрена возможность заполнения сразу нескольких документов.
Создание и ведение реестра документов
Помимо заполнения документов в программе можно вести реестр создаваемых документов. Данные будут автоматически переноситься в реестр и вы сможете к ним вернуться спустя время. Вы сможете повторно создавать документы или исправлять в них данные нажав пару кнопок.
Реестр документов можно настраивать по своему усмотрению добавляя в него формулы или дополнительные данные, а можно и наоборот хранить в нем только выжимку информации.
В дальнейшем у нас в панах добавить функционал документооборота с возможностью создавать напоминания и визуальным отслеживанием статусов.
Версия от 22.10.2021
Операционная система: Windows
Microsoft Office 2007/2010/2013/2016/2019/365
Надстройка для Excel позволяет пользователям заполнять любое количество документов Word (.doc, .docm, .docx) данными, хранящимися в Excel-файлах (.xls, .xlsm, .xlsx).
* вид диалогового окна на видео может отличаться от вида диалогового окна в надстройке последней версии.
Для работы с надстройкой необходимо:
2. Установить надстройку (и при необходимости комплект пользовательских функций), следуя пошаговой инструкции по установке для различных версий Excel;
3. Подготовить рабочую книгу Excel с исходными данными:
а) наименования столбцов (шапка таблицы) должны находиться в первой строке листа;
б) наименования столбцов должны быть уникальными (не должны повторяться);
в) на листе не должно быть объединенных ячеек;
г) при необходимости воспользоваться функциями вспомогательной надстройки;
В состав вспомогательной надстройки входят следующие функции:
СуммаПрописьюРубли - преобразует число в текст прописью и подставляет рубли;
СуммаПрописьюЕвро - преобразует число в текст прописью и подставляет евро;
СуммаПрописьюДоллары - преобразует число в текст прописью и подставляет доллары;
СуммаПрописьюГривны - преобразует число в текст прописью и подставляет гривны;
СуммаПрописьюТенге - преобразует число в текст прописью и подставляет тенге;
ЧислоПрописью - преобразует целое число в текст прописью как в мужском, так и в женском роде (ИСТИНА - мужской, ЛОЖЬ - женский);
РодПадежФИО - преобразует ФИО в родительный падеж (ФИО в разных ячейках);
РодПадежФИО_2 - преобразует ФИО в родительный падеж (ФИО в одной ячейке);
РодПадежИО_2 - преобразует имя и отчество в родительный падеж (ИО в одной ячейке);
РодПадежДолжность - преобразует должность в родительный падеж;
ДатаСтрокой - преобразует дату к формату «dd» month yyyy, если аргумент "Кавычки" - ИСТИНА, или к формату dd month yyyy, если аргумент "Кавычки" - ЛОЖЬ;
ВалютаРубли - определяет окончание целой части валюты по указанному числу;
ВалютаКопейки - определяет окончание дробной части валюты по указанному числу;
ДробноеЧислоПрописью - преобразует дробное число в текст прописью до тысячных.
Инструменты Excel позволяют достичь высокой степени автоматизации при подготовке исходных данных.
4. Подготовить шаблоны документов Word, для этого необходимо внести в документы Word специальные метки. Такими метками служат наименования столбцов рабочей книги Excel с исходными данными, заключенные между символами нижнего подчеркивания и фигурных скобок. Например, для договора подготовленный шаблон выглядит следующим образом:
5. Нажатием кнопки, расположенной на вкладке "Надстройки", вызвать диалоговое окно;
6. В диалоговом окне выбрать шаблон/шаблоны документов Word и при необходимости отметить флажками дополнительные параметры;
7. При необходимости копирования и вставки в шаблоны документов Word таблиц, перейти на соответствующую вкладку, установить флажок в поле "Вставить таблицы в шаблон" и выделить диапазон ячеек с исходными данными для вставки таблиц: адреса диапазонов, имена листов с диапазонами, имена закладок в шаблоне (образец диапазона с исходными данными и всеми необходимыми комментариями входит в комплект надстройки);
8. При необходимости вставки в шаблонов документов Word изображений, перейти на соответствующую вкладку, установить флажок в поле "Вставить изображения в шаблон" и выделить диапазон ячеек с исходными данными для вставки таблиц: полные имена файлов, размеры изображений, способ обтекания текстом, имена закладок в шаблоне (образец диапазона с исходными данными и всеми необходимыми комментариями входит в комплект надстройки);
- по умолчанию изображения вставляются с натуральными размерами (при необходимости можно задать размеры изображений);
- при необходимости можно указать несколько имен закладок через точку с запятой ";" без промежуточных пробелов;
9. Сохранить сделанные в диалоговом окне установки, чтобы не повторять их в следующий сеанс работы;
10. Нажать кнопку "ОК".
Каждый выбранный в диалоговом окне шаблон документа поочередно заполняется данными каждой строки списка из рабочей книги Excel с исходными данными.
1) автоматически заполнять выбранный шаблон документа Word данными строки активного рабочего листа книги Excel;
2) автоматически заполнять выбранный шаблон документа Word данными всех строк рабочего листа книги Excel с исходными данными (при необходимости можно использовать стандартные фильтры Excel для выборочного отображения исходных данных);
3) автоматически заполнять несколько шаблонов документов Word данными как одной, так и нескольких строк листа рабочей книги с исходными данными;
4) автоматически сохранять заполненные документы под уникальными именами и сообщать пользователю имена файлов и пути к папкам, в которые они сохранены;
5) задавать путь к папке для сохранения заполненных документов (по умолчанию документы сохраняются в ту же папку, в которой расположен шаблон заполняемого документа);
6) использовать значения ячеек заданного столбца в именах заполняемых документов;
7) автоматически закрывать заполненные документы;
9) автоматически создавать копии заполненных документов в формате pdf;
10) копировать диапазоны ячеек и вставлять таблицы в шаблоны документов Word;
11) вставлять изображения в шаблоны документов Word;
12) сохранять настройки диалогового окна для последующих сеансов работы с надстройкой.
+ помощь при установке
+ помощь при настройке
+ бесплатные обновления
+ без привязки к компьютеру
*В случае, если в надстройку будут внесены какие-либо изменения или дополнения, то обновленную версию надстройки Вы получите бесплатно.
Автоматизация заполнения и вывода файлов по шаблонам рутинных документов это одна из та областей в отрасли строительства по которой традиционно софт, кроме бухгалтерского, находится на уровне вылизанных поделок, на мой скромный взгляд. Поэтому, развивая тему, приглашаю обсудить те проблемы и возможности, с которыми пришлось столкнуться в процессе реализации на базе MS Excel.
Со времени предыдущей статьи прошло уже пол года. За это время при помощи этой заготовки была разработана текстовая часть Исполнительной документации и сдана Заказчику. По итогам работы и отзывам редких участников в файл были внесены следующие правки, о которых я бы хотел поговорить и это 3 большие темы:
- Эстетика и юзабилити
- Оптимизация кода + нововведения
- Структура и связи
1. Эстетика и юзабилити
— Таблицы это в первую очередь таблицы, безликие ячейки с подписанными колонками и строками. Однако очень часто мы сталкиваемся с ситуацией, когда необходимы дополнительные пояснения к значению, которое будет находится в ячейке, или требуется дополнительно активизировать внимание пользователя на важности вводимого значения. Особенно важно, если у Вас, как в моем случае, строки в колонке очень длинной таблицы содержат разноплановую информацию, например: даты, виды работ, материалы, подписанты и многие др. В таких случаях у нас есть 2 инструмента для решения задачи:
Есть и минусы такого решения, в частности всплывающие подсказки могут раздражать, но в ситуации, когда на объекте 15" мониторы на ноутбуках с разрешением 1366×768 это разумный компромисс, что бы рабочая область была как можно больше.
Если внимательно проанализировать данные, то окажется что в таблице будут ячейки 3х типов:
- ячейки в которые непосредственно необходимо вводить новую текстовую информацию;
- ячейки, значение которых может принимать значение из ограниченного диапазона, введенного заранее, например: ФИО и должность подписантов;
- ячейки в которых прописаны формулы, например есть часть данных которая будет повторяться из акта в акт и такую информацию достаточно ввести один раз, например: наименование объекта, участок, организация и т.п.; либо формулы призванные реализовать технические возможности, например: переноса строки, подтягивание объемов работ, регалий по ФИО и т.п.
Здесь первая процедура постоянно будет защищать лист при помощи пароля 111, вторая будет блокировать функционал вырезать-вставить. Надо ли говорить, что это все работает только при включенных макросах, но с другой стороны без них и файл на 100% функционировать не будет.
Для случаев же п.2 разумно завести лист где столбцы будут содержать меняющиеся значения, прописать в них ссылки на диапазоны, присвоить им имена, т.е. на вкладке «Формулы» -> «Диспетчер имен» каждому диапазону присвоить имена и через вкладку «Данные» -> пункт меню «Проверка данных» -> вкладка «Параметры» -> условие проверки — «Список» реализовать выпадающее меню.
И, конечно, не забывайте ставить условия форматирования цветом, например для случаев, когда заполнены все необходимые строки в столбце через «Условное форматирование», например формула условного форматирования закрашивает ячейку, если следующие ячейки под ней содержат текст: =И(ДЛСТР(E5)>0; ДЛСТР(E6)>0)
2. Оптимизация кода + нововведения
Начать придется издалека, а именно вернуться к вопросу о реализации механизма заполнения шаблона. Если Вы решите заполнить шаблон в формате Excel и в формате Word, то это будут совершенно 2 разных механизма. В основе своей в файл Excel пишутся значения в конкретные ячейки файла или диапазоны ячеек и имеют привязку вида (у, х) (не спрашивайте почему у них строка идет впереди столбца при адресации — не знаю), например: Worksheet.Cells(y, x) = k. Отсюда же и первая мысль, что заполнять Excel-шаблон можно либо явным образом, т.е. непосредственно весь макрос будет содержать что откуда берется и куда закладывается, но что если придется вносить изменения в таблицы данных или выйдет новая форма шаблона? Отсюда вторая идея реализации, код которой описан в первой статье — это парсинг некоторых символов, которыми сперва заполняется массив, а так же в свою очередь содержит файл шаблона в нужных местах. Затем в каждой строке шаблона ищется совпадение с элементами массива поочередно, если совпадение есть, то порядковый номер массива привязан к строке таблицы откуда берутся данные, а столбец берется с листа в котором мы указываем какие именно акты мы хотим вывести. Итого несколько вложенных циклов, что накладывает ограничения на форматирование шаблона Excel, чем проще — тем лучше, потому что чем больше ячеек парсить — тем дольше будет происходить заполнение шаблона данными.
По многочисленным просьбам мною была интегрирована возможность вывода в шаблон формата Word, и здесь на самом деле есть 2 способа вывода текста:
когда мы так же считываем массив управляющих кодов, вручную прописываем их в шаблоне через «Вставка» -> «Закладки» и дальше просто прогоняем макросом присваивая закладке данные из соответствующей ей ячейке в файле Excel.
Здесь вынесена в отдельную процедуру обращение к закладке и arrСсылкиДанных(i) — это массив который содержит управляющие символы. Издержки метода, если Вам потребуется сослаться на значение Закладки в другом месте, например дату нужно использовать в заголовке и напротив фамилии каждого подписанта, то необходимо использовать в шаблоне Меню «Вставка» -> пункт меню «Перекрестная ссылка» -> Тип ссылки: «Закладка», Вставить ссылку на: «Текст закладки» и снять галочку «Вставить как гиперссылку». Что бы это отобрадзилось корректно не забудте обновить в конце макроса перед выводом поля Wd.Fields.Update
Здесь нужно обратить внимание, что у каждой таблицы в Word есть свой внутренний номер, методом нехитрого перебора Вы найдете нужный, а дальше принцип тот же, что и в Excel.
Между выводами в файлы форматов Word и Excel есть огромная пропасть, которая заключается в следующем:
Шаблон Excel требует перед использованием настроить отображение под конкретный принтер, т.к. фактическая область печати разнится от модели к модели. Так же перенос строки текста возможен, но только в пределах ячейки/объединенных ячеек. В последнем случае не будте автораздвигания строки, в случае переноса текста. Т.е. Вам вручную придется заранее определит границы области, которые будут содержать текст, который в свою очередь в них еще должен убраться. Зато Вы точно задали границы печати и выводимого текста и уверены, что не съедет информация (но не содержание) с одного листа на другой.
Шаблон Word при настройке автоматически переносит текст на последующую строку, если он не убрался по ширине ячейки/строки, однако этим самым он вызывает непрогнозируемый сдвиг текста по вертикали. Учитывая тот факт, что по требованиям к Исполнительной документации в строительстве ЗАПРЕЩЕНО один акт печатать на 2х и более листах, то это в свою очередь так же рождает проблемы.
Вторым большим нововведением стал отказ от реализации переноса текстовых строк с макроса VBA и заменой на функцию Excel, благодаря чему ускорилась работа с файлом.
Для первой строки:
<=ЕСЛИОШИБКА(ЕСЛИ($F$20<>"-"; ПСТР('Данные для проекта'!$C$3; СУММ(ДЛСТР(F$1:F1))+1;105-ПОИСКПОЗ(" *"; ПРАВСИМВ(ПСТР('Данные для проекта'!$C$3; СУММ(ДЛСТР(F$1:F1))+1;105); СТРОКА($1:$10));)));"-")>
Здесь используется принцип массивов, т.е. вводится такой текст по Ctrl + Shift + Enter, а не обычному Enter. Сами формулы располагаются в ячейках F1 и F2. 'Данные для проекта'!$C$3 — ссылка на наименования объекта, длина текста которого более 105 символов. Перенос организуется в случае превышения длины текста в 105 символов.
Еще одним нововведением стал общий реестр, а так же контроль списания материалов по актам АОСР, но здесь ничего нового, просто парсинг соответствующих строк в свяске ИНДЕКС + ПОИСКПОЗ, которые расписаны во многих мануалах.
3. Структура и связи
Но мой пост так бы и остался рядовым постом с очередной игрой в изобретание велосипеда инструментами, которые рассчитаны на совершенно другое, если бы ни одно НО(!) Месячно-суточный график.
Идея о том, что можно именно на него много чего повесить, например заполнение Общего журнала работ в части Раздела 3 — наименование работ по датам, очередность и необходимость Актов освидетельствования скрытых работ и не только — завладела моими мыслями. Обычно в Excel закрашивают даты, в зависимости от диапазонов дат — начало и конец, но не на стройке. На стройке в календарном графике пишут объемы, а в зависимости от того с какой даты напротив наименования работ стоят объемы и по которую — получаются диапазоны дат отчетных периодов. На скриншоте серым помечены объемы попадающие в систематизированные отчетные периоды (1мес). Таким образом получается, что если:
Читайте также: