Записывайте и применяйте один макрос к множеству книг Excel без программирования
Довольно часто приходится работать с типовыми Excel файлами: регулярные отчеты, счета, заказы из региональных офисов, т.д. В итоге накапливается 200, 300 или даже 1000 однотипных документов с одинаковой структурой. А что если вам нужно изменить значение в конкретной ячейке, или удалить строку, или заменить какой-то текст во всех рабочих книгах? Как применить одинаковые изменения к каждой книге автоматически?
Инструмент XLTools «Зациклить макрос» помогает внести изменения во множество книг сразу:
Записывайте изменения как макрос
Применяйте макрос к нескольким книгам, не отрывая их
Не требует навыков программирования на VBA
Перед началом работы добавьте «Зациклить макрос» в Excel
«Зациклить макрос» – это один из 20+ инструментов в составе надстройки XLTools для Excel. Работает в Excel 2019, 2016, 2013, 2010, десктоп Office 365.

Скачать XLTools для Excel
– пробный период дает 14 дней полного доступа ко всем инструментам.
Как включить доступ к макросам и начать работу с инструментом «Зациклить макрос»
Чтобы работать с инструментом «Зациклить макрос», нужно включить доступ к макросам в ваших настройках Excel:
Вкладка «Разработчик» Безопасность макросов Отметьте «Включить все макросы» и «Предоставлять доступ к объектной модели проектов VBA» ОК Перезапустите Excel.
Или: Файл Параметры Центр управления безопасностью Параметры центра управления безопасностью Параметры макросов Отметьте «Включить все макросы» и «Предоставлять доступ к объектной модели проектов VBA» ОК Перезапустите Excel.

Как зациклить макрос на множество рабочих книг
Инструмент «Зациклить макрос» помогает зациклить макрос на множество книг Excel, другими словами, помогает применить один и и тот же макрос к большому числу рабочих книг.
Внимание: перед тем, как продолжить, рекомендуем сохранить резервную копию файлов. После запуска макроса изменения не могут быть отменены.
Откройте одну из рабочих книг, в которые вы хотите внести изменения. Она послужит шаблоном.
Откройте вкладку XLTools В группе Автоматизация нажмите Зациклить макрос .

Если в вашей рабочей книге уже есть кастомные макросы, выберите нужный из списка.
Ограничение: макросы из Личной книги макроса (Personal Macro Workbook) не доступны.
Выберите только что записанный макрос – посмотрите, как записать новый макрос.

Отметьте флажком Включить файлы в подпапках , и файлы будут добавлены
Снимите флажки с тех файлов, которые нужно исключить из обработки

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

Как записать макрос на лету с инструментом «Зациклить макрос»
Инструмент «Зациклить макрос» интегрирован с нативным Средством записи макросов в Excel. Вы можете записать макрос на лету и потом зациклить его на множество книг.
Откройте вкладку XLTools В группе Автоматизация нажмите Зациклить макрос Откроется окно Нажмите иконку Записать новый макрос .

Напишите понятное название макроса
Опция «Сохранить в этой книге» будет задана по умолчанию
Добавление сочетания клавиш и описание опционально

Нажмите ОК Начнется запись макроса Вносите необходимые изменения, которые нужно записать.
Когда будете готовы, нажмите кнопку Остановить запись панели инструментов XLTools.
Или: используйте комбинацию горячих клавиш Shift + Ctrl + M .

После остановки записи снова откроется окно «Зациклить макрос». Продвинутые пользователи могут изменить только что записанный макрос в редакторе Visual Basic.

Как внести одинаковые изменения в множество книг [пример]
Инструмент «Зациклить макрос» позволяет внести одинаковые изменения во все рабочие книги в папке одновременно.
Предположим, у вас есть папка с 200 рабочими книгами. Каждая книга содержит сводку ежемесячных заказов из одного регионального офиса, например «Северная Америка_январь». Все книги имеют одинаковую структуру. Вам нужно автоматически добавить расчеты по общей сумме в каждую книгу.
Совет: если вы планируете внести большой список изменений в книги, рекомендуем разбить процесс на несколько шагов и записать несколько мелких макросов вместо одного большого.
Прежде чем продолжить, сохраните резервные копии файлов.
Откройте одну из книг, которая послужит шаблонов, напр. «Северная Америка_январь».
Откройте вкладку XLTools В группе Автоматизация нажмите Зациклить макрос Откроется окно.
Добавьте текст в ячейку E1: “ИТОГО:”
Добавьте формулу в ячейку E2: =СУММ(C:C)
Примените к столбцу С условное форматирование зеленую гистограмму. Это визуализирует относительный объем заказа.

Нажмите кнопку Остановить запись на вкладке XLTools Снова откроется окно «Зациклить макрос».
Выберите папку с файлами, в которые нужно внести такие же изменения Все файлы будут добавлены в список.

Нажмите Выполнить Подождите несколько минут, пока не закончится обработка Готово, все рабочие книги успешно обработаны.

Откройте одну из обработанных книг, напр. «Европа_апрель», и убедитесь, что все нужные изменения внесены верно.
Как зациклить макрос Excel?
‘
ActiveCell.FormulaR1C1 = «0»
Range(«A14»).Select
ActiveCell.FormulaR1C1 = «0»
Range(«A15»).Select
ActiveCell.FormulaR1C1 = «0»
Range(«A16»).Select
ActiveCell.FormulaR1C1 = «0»
Range(«A17»).Select
ActiveCell.FormulaR1C1 = «0»
Range(«A18»).Select
ActiveCell.FormulaR1C1 = «0»
Range(«A19»).Select
ActiveCell.FormulaR1C1 = «0»
Range(«A20»).Select
ActiveCell.FormulaR1C1 = «0»
Range(«A21»).Select
ActiveCell.FormulaR1C1 = «0»
Range(«A22»).Select
ActiveCell.FormulaR1C1 = «0»
Range(«A23»).Select
ActiveCell.FormulaR1C1 = «0»
Range(«A24»).Select
End Sub
- Вопрос задан более трёх лет назад
- 599 просмотров
Комментировать
Решения вопроса 1
Воспользуйся циклами.
Dim i As Integer For i = 1 To 6 Cells(i, 1).Value = 100 Next i
Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Windows
- +3 ещё
При открывании csv файла в формате .txt появляются символы («» и 😉 как можно открыть csv файл без символов; и «»?
- 1 подписчик
- 27 апр.
- 91 просмотр
Использование Do. Операторы цикла
Использовать Do. Операторы цикла для выполнения блока инструкций неограниченное количество раз. Операторы повторяются до тех пор, пока сохраняется условие True, или пока условие не станет True.
Повторяющиеся инструкции, когда условие имеет значение True
Существует два способа использования Whileключевое слово для проверка условия в do. Оператор Loop. Вы можете проверка условие перед вводом цикла или проверка его после выполнения цикла хотя бы один раз.
В следующей ChkFirstWhile процедуре перед вводом цикла проверка условие. Если myNum задано значение 9, а не 20, операторы внутри цикла никогда не будут выполняться. В процедуре ChkLastWhile инструкции в цикле выполняются только один раз, прежде чем условие станет False.
Sub ChkFirstWhile() counter = 0 myNum = 20 Do While myNum > 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox "The loop made " & counter & " repetitions." End Sub Sub ChkLastWhile() counter = 0 myNum = 9 Do myNum = myNum - 1 counter = counter + 1 Loop While myNum > 10 MsgBox "The loop made " & counter & " repetitions." End Sub
Повторяющиеся инструкции до тех пор, пока условие не станет true
Существует два способа использования ключевого слова Until для проверки условия в операторе Do. Loop. Вы можете проверка условие перед вводом цикла (как показано в ChkFirstUntil процедуре) или проверка его после выполнения цикла хотя бы один раз (как показано в процедуре ChkLastUntil ). Повторение циклов продолжается, пока сохраняется условие False.
Sub ChkFirstUntil() counter = 0 myNum = 20 Do Until myNum = 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox "The loop made " & counter & " repetitions." End Sub Sub ChkLastUntil() counter = 0 myNum = 1 Do myNum = myNum + 1 counter = counter + 1 Loop Until myNum = 10 MsgBox "The loop made " & counter & " repetitions." End Sub
Выход из do. Оператор Loop из цикла
Вы можете выйти из do. Выполните цикл с помощью инструкции Exit Do . Например, чтобы выйти из бесконечного цикла, используйте инструкцию Exit Do в блоке инструкции True либо if. Затем. Оператор Else или оператор Select Case . Если условие будет False, цикл запустится обычным образом.
В следующем примере myNum присваивается значение, которое создает бесконечный цикл. Оператор If. Then. Else проверяет это условие, а затем выходит из бесконечного цикла.
Sub ExitExample() counter = 0 myNum = 9 Do Until myNum = 10 myNum = myNum - 1 counter = counter + 1 If myNum < 10 Then Exit Do Loop MsgBox "The loop made " & counter & " repetitions." End Sub
Чтобы остановить бесконечный цикл, нажмите клавиши ESC или CTRL+BREAK.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Обратная связь
Были ли сведения на этой странице полезными?
Обратная связь
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе https://aka.ms/ContentUserFeedback.
Отправить и просмотреть отзыв по
Как зациклить макрос в excel
Перерыла весь сайт, прочитала тонну информации про циклы и макросы, но результатов это не дало.
У меня есть таблица со списком дел, в которой стоит условное форматирование, которое красит дату дедлайна в зависимости от сегодняшнего числа.
И есть макрос, который при запуске проверяет содержимое ячейки в столбце "Status", и если там стоит "done", убирает УФ из ячейки и подкрашивает её определенным образом. (Сама табличка прикреплена)
Для большего понимания - в ячейке D2 стоит "done", следовательно из ячейки B2 удаляется УФ и она же окрашивается.
Сам макрос ниже и он работает именно так, как мне нужно. (Если в нем что-то неправильно, прошу извинить, это мой первый )
Проблема только в том, что я не понимаю, как его зациклить, чтобы действие выполнялось не только к одной строке, но и к остальным.
Если в Range прописать не одну ячейку, а диапазон (например с B2 по B8, и с D2 по D8, то макрос закрашивает весь столбец, а не проверяет его построчно)
Есть ли какой-либо способ сдвигать этот процесс вниз на одну ячейку, выполнять его, и снова сдвигать вниз до конца таблицы?
Очень не хочется вручную прописывать условия для каждой строчки.
dim a as long for a=0 to 100 step 1 Range("B2:B8").offset(a).Select Application.Run next a
Но не очень понимаю, как он работает - т.е. откуда взялось а, что за application, и почему именно long, а не вдругие варианты переменных, которые я нашла на просторах интернета.
Буду очень благодарна за помощь и советы)
И сам макрос, который надо доработать:
Sub Macro3() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Range("B2").Select If Range("D2").Value = "done" Then Range("B2").FormatConditions.Delete With Selection.Interior .ColorIndex = 50 .Pattern = xlSolid End With With Selection.Font .ThemeColor = 1 End With End If Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub
Прикрепленные файлы
- macros test.xlsx (12.15 КБ)