В продолжении темы автоматизации вывода файлов по шаблону. Excel
Эстетика и юзабилити
1. Примечание
2. Вкладка «Данные» -> пункт меню «Проверка данных» -> вкладка «Сообщение для ввода»
Есть и минусы такого решения, в частности всплывающие подсказки могут раздражать, но в ситуации, когда на объекте 15″ мониторы на ноутбуках с разрешением 1366×768 это разумный компромисс, что бы рабочая область была как можно больше.
Если внимательно проанализировать данные, то окажется что в таблице будут ячейки 3х типов:
- ячейки в которые непосредственно необходимо вводить новую текстовую информацию;
- ячейки, значение которых может принимать значение из ограниченного диапазона, введенного заранее, например: ФИО и должность подписантов;
- ячейки в которых прописаны формулы, например есть часть данных которая будет повторяться из акта в акт и такую информацию достаточно ввести один раз, например: наименование объекта, участок, организация и т.п.; либо формулы призванные реализовать технические возможности, например: переноса строки, подтягивание объемов работ, регалий по ФИО и т.п.
И, конечно, не забывайте ставить условия форматирования цветом, например для случаев, когда заполнены все необходимые строки в столбце через «Условное форматирование», например формула условного форматирования закрашивает ячейку, если следующие ячейки под ней содержат текст: =И(ДЛСТР(E5)>0; ДЛСТР(E6)>0)
Оптимизация кода + нововведения
По многочисленным просьбам мною была интегрирована возможность вывода в шаблон формата Word, и здесь на самом деле есть 2 способа вывода текста:
когда мы так же считываем массив управляющих кодов, вручную прописываем их в шаблоне через «Вставка» -> «Закладки» и дальше просто прогоняем макросом присваивая закладке данные из соответствующей ей ячейке в файле Excel.
Здесь нужно обратить внимание, что у каждой таблицы в Word есть свой внутренний номер, методом нехитрого перебора Вы найдете нужный, а дальше принцип тот же, что и в Excel.
Между выводами в файлы форматов Word и 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 символов.
Еще одним нововведением стал общий реестр, а так же контроль списания материалов по актам АОСР, но здесь ничего нового, просто парсинг соответствующих строк в свяске ИНДЕКС + ПОИСКПОЗ, которые расписаны во многих мануалах.
Структура и связи
Но мой пост так бы и остался рядовым постом с очередной игрой в изобретание велосипеда инструментами, которые рассчитаны на совершенно другое, если бы ни одно НО(!) Месячно-суточный график.
[expert_bq id=»1570″]Идея состоит в том, чтобы перенести некоторую часть текста, найденного в 1 исходном документе, в целевой документ, который отличается от исходного, и сохранить исходное форматирование. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Я делал то же самое, пытался выбрать другой документ, скопировать и вставить. Но это не сработало (я получил ошибку, вероятно, потому, что какое-то другое приложение использовало буфер обмена, но я не уверен). Поэтому я немного поискал и нашел идеальное решение в Центре разработки Microsoft.Использование vba для копирования содержимого документа word в другой документ word — CodeRoad
4.2.3. Импорт и экспорт Имея в своем браузере множество ссылок на любимые и просто нужные сайты, совершенно не хотелось бы вносить их заново вручную в закладки Яндекса. Собственно ничего сложного в импорте ссылок из вашего браузера нет, что и было реализовано в этом
[expert_bq id=»1570″]создавать такие документы, Нажатие ссылки на выходе отправить повторений и пустых Step -1 currFind 1 Else файлы, произошла заминочка. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq]
заполнить данными этотСлияние ExcelОК таблице Excel и разделы каждого документа.Этап 6. Завершение слиянияПисьма простой – одна найден нужный л/с знач. Worksheets(1).Cells(i, 8).Value
6. Включение/выключение макросов MS Office
- Выделите нужную таблицу в файле. Это можно сделать двумя способами. Первый – это выделить с помощью левой кнопкой мыши. Второй способ подходит для больших таблиц. Чтобы не мучиться, нажмите на самую первую ячейку первой строки. Далее пролистываем в самый конец таблицы. Зажимаем кнопку Shift и, не отпуская её, кликаем левой кнопкой мыши по последней ячейке последней строки.
- Как только таблица будет выделена, жмем правой кнопкой мыши по ней, и из списка команд выбираем «Копировать». Я все же советую использовать горячие клавиши Ctrl + C – так быстрее и проще.
Первое, что нам нужно сделать, это открыть Excel и найти данные который мы хотим скопировать, назовем его Листом 1. Затем открываем или создаем лист, на который хотим скопировать эти данные , для этого объяснения мы назовем его Листом 2.