Автоматизация работы в документах microsoft excel. Автоматизация Excel: автоматизация рутинных операций в Excel без макросов. Исходные данные для автоматизации

Продолжаем публикацию материалов из Справочника фрезеровщика под редакцией В.Ф. Безъязычного. На этот раз разберем основные узлы фрезерных станков .

Несмотря на разнообразие типов и размеров, станки фрезерной группы имеют общие узлы, к которым можно отнести: основание станка, станину, салазки, шпиндель, коробки скоростей и подач, консоль (для консольных станков).

Станина предназначена для крепления всех узлов и механизмов станка. В зависимости от типа станка станины могут иметь горизонтальное или вертикальное исполнение . Горизонтальные станины крупногабаритных, например продольно-фрезерных, станков устанавливают на фундамент всей опорной поверхностью. Вертикальные станины монтируют на основании станка, которое установлено или закреплено на фундаменте. Для большинства станков станины выполняют из серого чугуна.

Шпиндель фрезерного станка служит для передачи крутящего момента режущему инструменту от коробки скоростей. От точности вращения шпинделя, его жесткости и виброустойчивости в значительной мере зависит точность обработки. Примерно 50 % всех проверок на точность, выполняемых в процессе изготовления, сборки и ремонта станка, приходится на шпиндельный узел.

Коробка скоростей является главным узлом привода главного движения станка и предназначена для передачи шпинделю станка различных частот вращения от электродвигателя привода. Коробку скоростей располагают внутри станины. Управляют коробкой с помощью механизма переключения частот вращения шпинделя.

Коробка подач обеспечивает получение рабочих подач и быстрые перемещения стола, салазок, консоли (у консольных станков).

Стол станка монтируется на направляющих и перемещается по ним в продольном направлении. У консольных станков направляющие стола смонтированы на салазках , которые являются промежуточным элементом между столом и консолью. Нижней частью салазки установлены на поперечных направляющих консоли и могут вместе со столом перемещаться в поперечном направлении.

Консоль – элемент консольных фрезерных станков коробчатой формы с вертикальными и горизонтальными (поперечными) направляющими . Вертикальными направляющими консоль соединена со станиной и может перемещаться по ней. По горизонтальным (поперечным) направляющим перемещаются салазки. Консоль может быть закреплена на направляющих станины по высоте специальными зажимами и является базовым узлом, объединяющим все остальные узлы цепи подач и распределяющим движение на продольную, поперечную и вертикальную подачу. Консоль поддерживается стойкой, в которой имеется телескопический винт для ее подъема и опускания.

В главе VI дано подробное описание фрезерных станков. В этой статье рассмотрим основные узлы консольно-фрезерных станков и правил ухода за ними. В зависимости от расположения шпинделя консольно-фрезерные станки делятся на горизонтальные и вертикальные.
Горизонтально-фрезерные станки характеризуются горизонтальным расположением шпинделя и наличием у станка трех взаимно перпендикулярных движений - продольного, поперечного и вертикального. Горизонтально-фрезерные станки делятся на две разновидности - простые и универсальные. В универсальных горизонтально-фрезерных станках рабочий стол помимо указанных перемещений может еще поворачиваться вокруг вертикальной оси на угол до 45° в каждую сторону. Для установки стола на требуемый угол к оси шпинделя между салазками и рабочим столом имеется поворотная часть, на периферии которой нанесены градусные деления.

На рис. 16 показан общий вид горизонтально-фрезерного станка 6М82ГБ. Основными узлами станка являются: основание 1, станина 2, хобот 4, консоль 7, салазки 6, стол 5, коробка скоростей с рабочим шпинделем 3, коробка подач.
Станина станка служит для крепления всех узлов и механизмов станка. Хобот перемещается по верхним направляющим станины и служит для поддержания при помощи серьги конца фрезерной оправки с фрезой. Он может быть закреплен с различным вылетом. Для увеличения жесткости крепления хобота применяют поддержки, которые связывают хобот с консолью
Консоль представляет собой отливку коробчатой формы с вертикальными и горизонтальными направляющими. Вертикальными направляющими она соединена со станиной и перемещается по ним. По горизонтальным направляющим перемещаются салазки. Консоль закрепляется на направляющих специальными зажимами и является базовым узлом, объединяющим все остальные узлы цепи подач и распределяющим движение на продольную, поперечную и вертикальную подачи. Консоль поддерживается стойкой, в которой имеется телескопический винт для ее подъема и опускания.
Стол монтируется на направляющих салазок и перемещается по ним в продольном направлении. На столе закрепляют заготовки, зажимные и другие приспособления. Для этой цели рабочая поверхность стола имеет продольные Т-образные пазы.
Салазки являются промежуточным звеном между консолью и столом станка. По верхним направляющим салазок стол перемещается в продольном направлении, а нижняя часть салазок вместе со столом перемещается в поперечном направлении по верхним направляющим консоли.
Шпиндель фрезерного станка служит для передачи вращения режущему инструменту от коробки скоростей. От точности вращения шпинделя, его жесткости и виброустойчивости в значительной мере зависит точность обработки.
Коробка скоростей предназначена для передачи шпинделю станка различных чисел оборотов. Двигатель станка расположен на станине.
Коробка подач служит для передачи столу различных величин подач в продольном, поперечном и вертикальном направлениях. Привод механизма подачи расположен внутри консоли и приводится в движение от отдельного электродвигателя. В отличие от приводов главного движения приводы подач являются тихоходными.
Вертикально-фрезерные станки характеризуются вертикальным расположением шпинделя и предназначены главным образом для работы торцовыми, концевыми и шпоночными фрезами.
Основными узлами вертикально- фрезерных станков модели 6М12П являются: основание, станина, поворотная шпиндельная головка, консоль, стол, салазки, коробка скоростей с рабочим шпинделем и коробка подач. Назначение узлов такое же, как и у горизонтально фрезерных станков. В вертикально- фрезерных станках нет хобота. Поворотная головка крепится к горловине станины и может поворачиваться в вертикальной плоскости на угол от 0 до 45° в обе стороны.

На рис 17 показаны органы управления вертикально фрезерного станка 6М12П. В станке предусмотрено дублирование управления. Органы управления расположены на передней панели станка и с левой стороны. Включение вращения шпинделя осуществляется спереди кнопкой 15, а с левой стороны - кнопкой 5, выключение вращения шпинделя - кнопкой 6. Импульсное (кратковременное) включение шпинделя производится кнопкой 3. Переключение шпинделя на требуемое число оборотов производят рукояткой 1. Требуемое число оборотов устанавливают поворотом лимба 4, ориентируясь по стрелке-указателю чисел оборотов шпинделя. Направление вращения шпинделя изменяют переключателем 26. Шпиндель станка смонтирован в поворотной головке, которая поворачивается в вертикальной плоскости на угол 45° в любую сторону. Шпиндель представляет собой двухопорный вал, смонтированный в выдвижной гильзе. Выдвижение гильзы вместе со шпинделем производят маховичком 9, а зажим - рукояткой 10.
Включение освещения станка (лампа 8) осуществляется переключателем 7, а включение насоса охлаждения - переключателем 27. Управление движениями стола осуществляется рукоятками, направление поворота которых совпадает с направлением движения стола. Переключение подач осуществляется с помощью грибка 20 и лимба переключения подач. При этом нажимают кнопку грибка, а пластмассовый грибок отводят на себя до отказа. Затем вращают за грибок лимб и устанавливают требуемую величину подачи. Лимб можно вращать в любую сторону. Включение продольной подачи стола осуществляется рукояткой 12 или 23 (дублирующая).
Включение вертикальной и поперечной подачи производится рукояткой 21 или 24 (дублирующая). Для настройки станка на автоматические циклы перемещения стола применяют кулачки 11. Быстрое перемещение стола в продольном, поперечном и вертикальном направлениях осуществляется кнопкой 2 или 16 (дублирующая). Ручное перемещение стола в продольном направлении осуществляется маховичками 13 и 25 (дублирующий), а в поперечном - маховичком 17.
Ручное вертикальное перемещение стола производится рукояткой 18. Консоль на поддерживающих стойках крепится рукояткой 19, салазки на консоли - рукояткой 22. При нажатии на кнопку 14 (стоп) происходит отключение двигателя от сети и торможение шпинделя. Выключение станка от сети производится главным выключателем 28.

Горизонтально-фрезерные станки являются наиболее распространенным оборудованием во всей фрезерной группе станков благодаря своей функциональности, универсальности и широкой области использования. Сферой их применения является как единичное, так и массовое производство. Данное оборудование позволяет вести обработку деталей из черных и цветных металлов, а также их сплавов.

Принципы работы горизонтальных фрезерных станков

Как и во всех остальных фрезерных станках, принцип работы горизонтальных моделей основан на вращении фрезы, обрабатывающей деталь (заготовку), которая закрепляется на подвижном столе. Подобное оборудование может быть консольным и бесконсольным.

С помощью горизонтально-фрезерных станков можно вести обработку деталей небольшого размера и веса методом фрезерования. Станки оборудованы столом, который передвигается поперечно и продольно, шпинделем размещенным горизонтально и предназначены для работы различными фрезами: цилиндрическими, концевыми, фасонными и т.д. Позволяют обрабатывать поверхности как в горизонтальной, так и в вертикальной плоскостях, включая углы, пазы, фасонные поверхности. Специальные делительные приспособления позволяют с высокой точностью вести обработку заготовок, нуждающихся в периодическом делении.

Простой визуальный осмотр горизонтально-фрезерного станка позволяет увидеть, что все его основные узлы смонтированы на станине, внутри которой располагаются коробка скоростей и механический шпиндельный узел. Оправка с фрезой поддерживается специальным хоботом.

Некоторые модели горизонтально-фрезерных станков имеют статус широкоуниверсальных, т.к. в их оснащение входит не только удобный рабочий стол большой площади, но и поворотная фрезерная головка, что создает максимум удобств в работе и гарантирует высокую точность сверления, растачивания, зенкерования. Управляется подобное оборудование с помощью приборной панели, расположенной в удобном для оператора месте. В некоторых моделях такие панели располагаются по обеим сторонам станины, что создает для рабочего дополнительный комфорт.

Шаблоны - вещь удобная и полезная! Они позволяют сэкономить время при составлении «шаблонных» документов, которых в повседневной работе добрая половина.

Возможно, в вашей деятельности нужны документы или таблицы, в которых основная часть неизменна, а некоторые фрагменты могут принимать одно из нескольких заранее известных значений. Хорошие примеры - доверенность, договор на оказание услуг, протокол рентгеновского или ультразвукового исследования. В докомпьютерную эпоху заготавливали типографские бланки, в которых оставалось «нужное подчеркнуть, ненужное зачеркнуть» и совсем немного вписать.

В документах Word такую роль играют поля со списком. Идея: щелкнуть мышью на определенном месте в документе, в ответ раскроется список с несколькими вариантами, выбираете мышью нужный - он появился в этом месте. Создавать подобные элементы логично в шаблонах документов. Допустим, вы занимаетесь ультразвуковой диагностикой и решили запастись шаблонами для заключений по основным исследованиям. Их не так уж много, и в каждом стереотипно используются одни и те же фразы.

Инструменты для работы с полями сосредоточены на вкладке Разработчик . По умолчанию она скрыта. Чтобы вкладка отображалась, щелкните правой кнопкой мыши на ленте и в контекстном меню выберите команду Настройка ленты . Откроется диалоговое окно Параметры Word , в котором в группе Основные вкладки нужно установить флажок напротив элемента Разработчик . Нажмите кнопку OK, и на ленте добавится названная вкладка.

  1. Установите курсор туда, где нужно вставить элемент управления. Перейдите на ленте на вкладку Разработчик и нажмите кнопку Элемент управления «раскрывающийся список». В указанное место будет вставлен этот элемент управления.
  2. На вкладке Разработчик нажмите кнопку Свойства элемента управления. Откроется диалоговое окно .
  3. В диалоговом окне Свойства элемента управления содержимым нажмите кнопку Добавить . Откроется дочернее окно Добавить вариант .
  4. В диалоговом окне Добавить вариант в поле Краткое имя введите тот текст, который вы хотите видеть как первый из вариантов выбора в списке. Нажмите кнопку OK . Значение будет добавлено в список.
  5. Таким же образом внесите в список остальные варианты. В качестве последнего из них введите просто один пробел - дальше поясню, зачем.
  6. Добавив в список все варианты, нажмите в диалоговом окне Свойства элемента управления содержимым кнопку OK. Диалоговое окно закроется. Раскрывающийся список готов!

Как он работает? Когда в документе вы щелкаете кнопкой мыши на таком элементе, раскрывается список. Вы выбираете из него подходящий вариант, и это значение отображается на месте поля. Выбирать готовые варианты на порядок быстрее, чем что-то вписывать или даже стирать. Если вдруг вы обнаружили совсем казуистическую картину, и среди заготовок подходящего описания нет, выберите «пустой» вариант (пробел). Правее поля вписывайте, что хотите - вот для этого и нужен вариант, состоящий из одного пробела.

Элемент управления Поле со списком работает почти так же, но с одним отличием - элементы списка могут редактироваться прямо внутри поля. Какой из двух элементов управления лучше подходит к вашей задаче, смотрите по ситуации.

В электронных таблицах Excel тоже предусмотрено нечто подобное. Только там ячейки с выбором одного из возможных значений проще создавать с помощью проверки данных - необходимые инструменты расположены на вкладке Данные в группе Работа с данными . Используя в шаблоне документа элементы управления, мы создаем простейшую форму. Однако можно пойти дальше. Кроме приведенных в качестве примера полей, в документах и таблицах Microsoft Office предусмотрены и другие элементы управления: кнопки, флажки, переключатели, полосы прокрутки. Мы привыкли видеть их в диалоговых окнах, но такие элементы можно встраивать непосредственно в документ.

Смысл работы с формой в том, что флажки устанавливаются, кнопки нажимаются, что-то, возможно, вписывается в поля ввода, а в результате формируются текст документа или содержимое таблицы. В таких «автоматизированных документах» обработкой действий пользователя занимаются макросы (макрокоманды).

Макрос - короткая простая программа, написанная на языке Visual Basic for Applications (VBA). В приложениях Microsoft Office поддержка этого языка заложена изначально, и есть все необходимые инструменты. Например, для начала макрос можно просто записать, не вникая в его внутреннее устройство. Схематично:

  1. На вкладке Разработчик в группе Код нажмите кнопку Записать макрос . Ваши действия с таблицей или документом начинают отслеживаться.
  2. Сразу же в открывшемся диалоговом окне предлагается дать имя макросу и назначить сочетание клавиш, которое в дальнейшем будет запускать этот макрос на выполнение.
  3. Последовательно выполняйте действия, которые вы хотите включить в макрос. Приложение Office запоминает их в виде последовательности команд, ведь в VBA любой операции с текстом или таблицами соответствует определенный код.
  4. Выполнив все необходимые операции, снова нажмите кнопку Записать макрос .

Макрокоманда будет сохранена в шаблоне или документе. Теперь, если вы нажмете сочетание клавиш, заданное на втором шаге, Excel или Word выполнят эту макрокоманду. Все записанные в ней действия программа повторит автоматически.

При необходимости содержимое макрокоманд можно просмотреть, отредактировать и дополнить в редакторе Visual Basic. Он является обязательной частью пакета Microsoft Office. Обычно только что записанный макрос - линейная последовательность команд. При редактировании в макрокоманды часто вставляют логические функции вида «если… то», «и», «или» и т. д. Выполняя их, макрокоманда проверяет и сравнивает значения разных ячеек, положение элементов управления, и в зависимости от этого строит дальнейшее поведение.

Любой макрос легко связать с элементами управления формы, например, с нажатием кнопки или выбором определенного значения в списке. Например, при создании элемента Кнопка сразу же предлагается назначить ему макрокоманду. Многим нужно бывает вставлять в документы «сумму прописью» или «число прописью». Среди стандартных инструментов Office такая функция отсутствует, однако задача легко решается с помощью макроса. Это одно из любимых упражнений для тех, кто начинает осваивать Visual Basic. В Интернете вы найдете тысячи примеров готовых макрокоманд, а также подробные разборы того, как написать подобный макрос самостоятельно.

Благодаря формам и макросам электронную таблицу удается превратить в довольно «умное» и изящное «мини-приложение». Работать оно будет на любом компьютере, на котором установлена программа Excel. Например, так делаются прайс-листы, которые клиент превращает в заказ, отмечая нужные позиции. Или, допустим, форма для расчета пластиковых окон. Исходные данные (перечень деталей и цены) содержатся на одном из листов книги Excel. На другом листе - форма. Вводим размеры, выбираем число и тип створок, производителя фурнитуры, отмечаем флажками и переключателями нужные опции. В результате на третьем листе отобразится полная спецификация для заказа, уже с ценами. Человек, освоивший работу с VBA, потратит на создание такой формы всего несколько часов.

Средства VBA с самого начала задуманы как «программирование для простых пользователей». Много интересных примеров и приемов работы с Word и Excel приводится на сайтах ladyoffice.ru, www.excel2010.ru, excelexpert.ru и др. И, разумеется, в первую очередь полезно обратиться к справочной системе Microsoft Office и разделам официального сайта Microsoft, посвященным работе с этим пакетом.

Зная о том, на что в принципе способны Word и Excel, вы можете поставить задачу тому, кто разработает «умные» шаблоны легко и с удовольствием. Желающие заняться подобным программированием есть везде. За разработку «малой автоматизации» охотно берутся студенты, любые люди, для которых программирование является хобби. Удачное решение - озадачить знакомых школьников! Им - интересные, притом реальные, темы для рефератов по информатике, а вам - полезные инструменты для работы.

Подробности Категория: Excel Опубликовано: 28 декабря 2017

Автоматизация составления исполнительной документации по строительству в Excel

Зачастую, когда говорят о работе в офисных приложениях, подразумевается использование ПК в качестве печатной машинки и, если честно, то это достаточно дорогая замена физическим механизмам, если не пользоваться возможностями который дает нам ПК. Давайте об этом и поговорим.

Введение.

На мой взгляд ПК появился как инструмент для решение принципа автоматизации рутинных процессов и в этом он чертовски хорош. Кроме того развитие функциональных программ есть история создания инструментов для реализации перевода авральных задач в рутинные действия, как следствие углубление разделения труда. Однако есть области, в т.ч. и документооборота, где на сегодняшний день ПК используется именно как печатная машинка в т.ч. и потому, что серьезных разработок не велось в силу того, что оклады людей сидят в накладных расходах и, как следствие, не велики, что не скажешь о возрастающих объемах документооборота.

Итак, поговорим про строительство, конкретно про составление Исполнительной документации (далее ИД).

об Исполнительной документации

Точнее про ее текстовую составляющую. Если вкратце, то ИД есть набор актов, журналов и иных документов, чертежей, схем которые составляются на каждый этап и даже операцию (группы операций) в строительстве, для подтверждения/отклонения выполняемых работ проекту. Такие документы сплошь шаблонные, их перечень, в зависимости от вида работ, регламентирован, и они ведутся согласно фактического графика выполняемых работ, формализуя утвержденной комиссией правильность/отступление работ проекту.

Большая часть работ закрывается по форме Акта освидетельствования скрытых работ (утвержденным приказом Федеральной службы по экологическому, технологическому и атомному надзору от 26 декабря 2006 года N 1128 (В редакции, введенной в действие с 6 марта 2016 года приказом Ростехнадзора от 26 октября 2015 года №42. Далее АОСР).

Исходные данные для автоматизации.

По-этому возьмем форму АОСР за основу. Итак, у нас есть шаблон документа, в который заносится следующая информация:

Постфикс номера акта;
- наименование объекта капитального строительства;
- юридические данные об участниках строительства (Застройщик или Заказчик; Лицо, осуществляющее строительство; Лицо, осуществляющее подготовку проектной документации;
Лицо, осуществляющее строительство, выполнившее работы, подлежащие освидетельствованию; иные лица.)
- перечень лиц с наименованием организаций, должностей и приказов подтверждающих их полномочия;
- наименование выполненных работ;
- сроки выполнения работ;
- перечень работ, входящих в выполненные работы;
- ссылки на НТД и разделы проекта/тех.документации;
- ссылки на исполнительные схемы, акты испытаний (если таковые требуются);
- перечень используемых материалов с сылками на документы подтверждающими их соответствие (паспорта, сертификаты и т.п.)

Мысли о принципиальных методах решения задачи

Итак, в первом приближении, можно просто создать наглядную таблицу, в которой назначив соответствующие однотипные поля каждому акту мы получим наглядную портянку схемы выполнения работ на объекте. И в этом нет ничего нового. Итак, нам необходимо связать форму с ячейками в таблицах данных и здесь есть 2 варианта:

1. Слияние с файлом Word
2. Заполнение при помощи макросов шаблона на базе Excel.

Каждый из этих способов имеет свои плюсы и минусы, но т.к. слияние производит замену в реальном времени, то мною было принято решение выбрать второй пункт, который в реальном времени слияние не обеспечивает и каждый раз необходимо будет осуществлять вывод актов, в случае корректировки данных, заново. Это связано с тем, что мне зачастую необходима история моих действий.

Итак, теперь мы упираемся в 2 задачи:

1. Заполнение шаблона на основе табличных данных
2. Какие поля достаточно ввести один раз, какие будет меняться время от времени и какие поля будут отличаться в каждом акте.

Решая задачу №2 мы вынесем на отдельный лист те данные, которые будут едины в рамках объекта/раздела проекта строительства - это:

Спойлер

На текущем листе заполним лишь один раз, а для остальных актов просто проставим ссылки на эти значения:

Спойлер

И поля, которые будут меняться в каждом акте:

Спойлер

Теперь об удобствах, если записать ФИО ответственных лиц, их организацию, приказ о назначении с датой, то при помощи инструмента «проверка данных» можно занести их фамилии в спойлер , а формулой подтягивать их регалии.

ЕСЛИОШИБКА(ДВССЫЛ(СЦЕПИТЬ(""Данные для проекта"!" ;АДРЕС((ПОИСКПОЗ(E30 ;"Данные для проекта" !$G$15:$G$34;0 ))+14 ;6 )));"-" )

Т.е. на листе "Данные для проекта" в диапазоне $G$15:$G$34, в 6м столбце ищем значение в ячейке Е30, и как только находим нехитрым методом преобразуем в адрес, который будет преобразован в ссылку формулами.

Новая проблема уже упирается в длину строки, если использовать шрифт Times New Roman №10, то длина текста, которая будет выводится на печать, не превышает 105 символов. Т.е. мы упираемся в необходимость создавать костыль для переносов. Итак код функции на VBA:

Function PatrOfString(StringOfTable As String , Nnumber As Byte) As String Dim МассивБлоков(1 To 10 ) As String Dim i As Integer " Dim j As Integer " Dim k As Integer " Dim p As Integer " For i = 1 To 10 Let МассивБлоков(i) = " " Next i Let k = 1 Let p = Len (StringOfTable) Let p1 = Len (StringOfTable) For i = 1 To Round (Len (StringOfTable) / 105 ) + 1 Step 1 If p > 0 And p < 105 Then If k <= p1 Then Let МассивБлоков(i) = Mid $(StringOfTable, k, p) Else If Mid (StringOfTable, k, 1 ) = " " Then If k <= p1 Then Let МассивБлоков(i) = Mid $(StringOfTable, k, 105 ) Let p = p - 105 k = k + 105 Else j = 105 * i If j - k >= 105 Then j = k + 105 End If Do j = j - 1 Loop While Mid $(StringOfTable, j, 1 ) <> " " Let МассивБлоков(i) = Mid $(StringOfTable, k, j - k + 1 ) Let p = p - (j - k + 1 ) Let k = j + 1 End If End If Next i If Nnumber - 1 > 0 Then If МассивБлоков(Nnumber) = МассивБлоков(Nnumber - 1 ) Then МассивБлоков(Nnumber) = " " End If PatrOfString = МассивБлоков(Nnumber)

Т.е. мы сперва забираем текст, потом вырезаем 105 символов, ищем с конца первый символ пробел, как его находим, то закидываем в первую строку массива текст длиной с первого символа, по номер найденного пробела. Затем продолжаем операцию до тех пор пока текст не закончится или не забьется выводной массив. На данном этапе он ограничен памятью в 10 строк. Затем мы выводим по ссылке содержание нужной строки из 1-10. Из минусов решения - забивается память, и для каждого нового запроса осуществляется пересчет заново. Но костыль работает.

Теперь вывод в типовой шаблон АОСР. Есть опять 2 варианта, либо вручную прописывать сопоставлению столбцу(/строки в случае горизонтально расположенных данных под каждый акт), то это будет долго и ресурсоемко подгонять каждый новый шаблон или изменения под таблицы данных. Потому делаем оптимизацию. Данные на каждый один акт будут располагаться вертикально, а сопоставление управляющей комбинации символов (на латинице, т.к. сами акты сплошь на кириллице) будут строки с информацией в этих актах, таким образом в двойном вложенном цикле поиском в тексте управляющих символов мы сопоставим нужное значение из колонки.

Do wb.Worksheets("Пример акта входного контроля" ).Copy after:=Worksheets(Worksheets.Count) Set новыйЛист = wb.Worksheets(Worksheets.Count) For x = 1 To 15 Step 1 " Перебираем столбцы в листе "Пример акта входного контроля" For y = 1 To 71 Step 1 " Перебираем строки в листе "Пример акта входного контроля" If Sheets(новыйЛист.Name).Cells(y, 20 ) = 1 Then Let k = CStr (Sheets(новыйЛист.Name).Cells(y, x)) " Ищем только если в ячейке что-то есть If k <> "" Then For i = 1 To Кол_воЭл_овМассиваДанных Step 1 Let k = Replace (k, arrСсылкиДанных(i), Worksheets().Cells(i, НомерСтолбца)) Next i новыйЛист.Cells(y, x) = k End If End If Next y Next x " Если Вы захотите добавить новые данные для автозаполнения, продолжайте этот список. " Ячейки имеют координаты формата Cells(3, 2), где 3 - пример номера строки, 2 - пример номера столбца " Чтобы легко узнавать номер столбца, можно включить стиль ссылок R1C1 " (Файл -> Параметры -> Формулы -> галочка на поле "Стиль ссылок R1C1") " либо задавать координаты в формате Cells(1, "A"), где 1 - пример номера строки, "А" - пример буквенного обозначения столбца Rem -= Уточняем имя файла и текущий путь к папке откуда запущен макрос =- Let ИмяФайла = ИмяФайла + CStr (Worksheets("БД для входного контроля (2)" ).Cells("1" , НомерСтолбца)) + "-" Let ИмяФайла = ИмяФайла + CStr (Worksheets("БД для входного контроля (2)" ).Cells("2" , НомерСтолбца)) + ".xlsx" НовыйПуть = Replace (ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайла) Application.DisplayAlerts = False " выключаем вывод предупреждений Sheets(новыйЛист.Name).Copy " Копируем текущий лист в новую книгу ActiveWorkbook.SaveAs Filename:=НовыйПуть, _ FileFormat:=51 ActiveWindow.Close Sheets(новыйЛист.Name).Delete " Удаляем созданный лист Application.DisplayAlerts = True " Включаем вывод предупреждений обратно Let НомерСтолбца = НомерСтолбца + 1 Loop While НомерСтолбца <= КонечныйНомерСтолбца End Sub

Ну и последний момент на данном этапе - мы упираемся в производительность системы и при большом кол-ве актов их вывод будет занимать часы. Дабы ускорить процесс я использую следующий вариант: Копирую содержимое листа с данными в новый лист макросом, он получает в своем имени циферку (2), затем запускается еще один макрос, ускоряющий Excel, но отключающий ряд функционала:

"Ускоряем Excel путём отключения всего "тормозящего" Public Sub AccelerateExcel() "Больше не обновляем страницы после каждого действия Application.ScreenUpdating = False "Расчёты переводим в ручной режим Application.Calculation = xlCalculationManual "Отключаем события Application.EnableEvents = False "Не отображаем границы ячеек If Workbooks.Count Then ActiveWorkbook.ActiveSheet.DisplayPageBreaks = False End If "Отключаем статусную строку Application.DisplayStatusBar = False "Отключаем сообщения Excel Application.DisplayAlerts = False End Sub

А после вывода всех данных из форм я прогоняю аналогичный макрос где тем же самым переменным присваиваю значение true и удаляю дублирующий лист, что бы не мешался.

(по материалам https://habrahabr.ru/post/344956/)