Как применить макрос ко всем файлам в папке

Обновлено: 07.07.2024

Иногда необходимо проделать однотипные операции с несколькими файлами, расположенными в одной папке. Можно открывать каждый по очереди:
Workbooks.Open "C:\Новая папка\Книга1.xlsx"
Workbooks.Open "C:\Новая папка\Книга2.xlsx"
и т.д.
Но если файлов много и все с разными именами, то это не очень практично и уж точно не компактно. А т.к. немногие начинающие могут сразу найти желаемое, я решил выложить код, который перебирает все файлы в папке и открывает их:

sFiles = Dir(sFolder & "*.xls*") - Строка отвечает за тип перебираемых файлов. В примере будут просмотрены любые файлы Excel. Звездочка на конце означает любой символ или набор символов. Т.е. если указать без неё - "*.xls", то будут просмотрены только файлы с расширением xls, а если указать xlsx - то файлы с расширением xlsx и никакие другие.
Если хотите перебрать файлы других форматов, а не Excel, то просто замените "*.xls" на нужное расширение. Например "*.doc". Также, если хотите собрать только файлы с определенными символами/словами в имени, то можно указать так: sFiles = Dir(sFolder & "*отчет*.xls*") . Будут просмотрены все файлы, содержащие в имени слово "отчет"(например "отчет за июнь.xls", "отчет за июль.xls", "сводный отчет.xls" и т.п.).

Но есть и еще одна проблема: что если необходимо открыть файлы не только в указанной папке, но и во всех её подпапках? Указанные выше код не подойдет в данной ситуации. В версиях Excel 2003 и младше это решалось с помощью метода .FileSearch, но в старших версиях данный метод по каким-то причинам был заблокирован разработчиками Microsoft. И осталось действовать только через рекурсивный метод перебора папок. Ниже приведен код, который открывает все файлы Excel в указанной папке, включая все подпапки:

If Replace(objFile.Name, objFSO.GetBaseName(objFile), "") Like ".xls*" Then

Строка отвечает за тип перебираемых файлов. В примере будут просмотрены любые файлы Excel. Звездочка на конце означает любой символ или набор символов. Т.е. если указать без неё - "*.xls", то будут просмотрены только файлы с расширением xls, а если указать xlsx - то файлы с расширением xlsx и никакие другие.
Если добавить условие: If objFSO.GetBaseName(objFile) Like "*книга*" Then
то будут обработаны файлы, которые в имени содержать слово "книга". При этом регистр букв имеет значение. Т.е. если файл содержит в имени слово "Книга", то он не будет обработан.
Думаю теперь Вы легко сможете проделать необходимые операции с множеством файлов.


В примере я закомментировал строки, открывающие файл и вносящие изменения в ячейку А1 и заменил это созданием массива имен всех файлов в папках и подпапках. По окончании имена всех файлов заносятся в столбец "А". Сделано для того, чтобы Вы случайно не повредили информацию в файлах.

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

Как применить функцию к нескольким сигналам сразу?
Имеется 100 записей сигналов. Необходимо применить функцию центрирования ко всем сигналам. Можно ли.

Работа с одной формой нескольким документам
Здравствуйте форумчане! такой интересный вопрос может кто подскажет где посмотреть или как этот.

Как применить функцию к нескольким элементам
Добрый день! Подскажите как оптимизировать код. Есть несколько списков html <p.

Открывать файлы в любом случае придётся. Вручную или программно.
Для программного способа надо определиться, как вы собираетесь перебирать эти файлы: показать пользователю диалог с выбором файлов или это просто папка, в которой надо обработать все имеющиеся файлы
А затем, имея массив файлов, можно строку
Set rDoc = ActiveDocument.Range
заменить на цикл, где вместо ActiveDocument будет использоваться элемент массива - документ Я иммею ввиду, что бы упростить процесс. Допустим документов не 30, а 1000. Не буду же я в каждый заходить и прожимать макрос. Как мне изменить код, подскажите пожалуйста.

Решение

Добавлено через 1 минуту
Сам диалог не помню где нашёл. Давно использовал для своего проекта

Как к нескольким картинкам в ImageList применить одну и ту же процедуру?
на форме 81 штук image, и 1 ImageList с 40 картинками внутри. надо что б эта процедура.

[CodeMirror] Как можно применить библиотеку к нескольким <textarea>?
Как можно применить библиотеку CodeMirror к нескольким &lt;textarea&gt;? Например, есть несколько.

Как подключить js-скрипт сразу к нескольким файлам?
Здравствуйте. Вот есть допустим папка а в ней файлы page1, page2. page57 Должен ведь быть.


Как в запросе на объединение применить WHERE сразу ко всем объединяемым таблицам?
Здравствуйте! В БД есть &quot;Запрос&quot; (на объединение), в котором желаемый результат. Если записей.

Как применить определённое действие ко всем свойствам в .cs файле сразу?
Как применить определённое действие ко всем свойствам в .cs файле сразу? Вот, допустим я хочу.

В этой статье я представляю макрос для открытия всех книг из определенной папки.

Список всех имен файлов одной конкретной папки с помощью Kutools for Excel

Откройте все книги в папке с VBA

1. Нажмите Alt + F11 ключи для открытия Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модульи вставьте в скрипт приведенный ниже код.

VBA: открыть все файлы Excel в папке

doc открывать файлы из папки 1

doc открывать файлы из папки 2

3. Нажмите F5 , появится диалоговое окно для выбора папки, в которой вы хотите открыть все книги в ней. Смотрите скриншот:

4. Нажмите OK, и все книги в конкретной папке были открыты.

Список всех имен файлов одной конкретной папки с помощью Kutools for Excel

За исключением открытия файлов в папке, пробовали ли вы когда-нибудь перечислить все имена файлов в одной конкретной папке? С участием Kutools for ExcelАвтора Список имен файлов Утилита, вы можете быстро перечислить все типы или один определенный тип файлов в одной папке.

После бесплатная установка Kutools for Excel, сделайте следующее:

doc открывать файлы из папки 4

1. Нажмите Kutools Plus > Импорт Экспорт > Список имен файлов. Смотрите скриншот:

doc открывать файлы из папки 5

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

doc открывать файлы из папки 6

3. Нажмите Ok, и все файлы в определенной папке были перечислены на новом листе активной книги. Смотрите скриншот:

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

• Добавлять или удалять метаданные, включая сведения о местоположении и прочие данные EXIF

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

2 В диалоговом окне Пакетная обработка на странице Добавить фотографии щелкните Добавить и выберите нужные файлы.

4 На странице Пакетные действия выберите любые из следующих действий:

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

• Водяной знак — Для получения информации о добавлении водяных знаков см. раздел Добавление видимых водяных знаков.

• Изменить размер — Для получения информации об изменении размера см. раздел Изменение размера изображений.

• Скрипт — Позволяет установить флажки для одного или нескольких макросов. Активируйте Автоматический режим , чтобы избежать отображения диалоговых окон, связанных с макросами (это прерывает процесс пакетной обработки и нуждается в действиях со стороны пользователя). Дополнительные сведения см. в разделе Работа с инструментами и функциями макросов.

• Рамка изображения — Для получения информации о рамках изображения см. раздел Добавление рамок к изображениям.

6 На странице Настройки вывода настройте любые из следующих параметров:

• Папка места назначения — Установите флажок Новый и перейдите в новую папку. Установите флажок Оригинал для сохранения в исходную папку.

• Имя файла — Чтобы переименовать файлы, установите флажок Переименовать , щелкните Изменить , выберите опцию в списке Параметры переименования и нажмите Добавить . Можно переименовать файл, изменив текущую дату, имя документа, положение файла в процессе переименования, текущее время и специальный текст.

• Конфликты имен — Активируйте подходящую опцию если файлы имеют одинаковые имена.

• Функции безопасности — Установите флажок Удалить информацию EXIF , чтобы удалить все метаданные EXIF из обработанных файлов. Установите флажок Удалить информацию о местоположении , чтобы удалить GPS-координаты. Установите флажок Добавить водяной знак , чтобы добавить водный знак Digimarc.

7 Нажмите Старт , чтобы запустить пакетную обработку.

На странице Пакетные действия щелкните Сохранить пакет , перейдите в папку, где будет хранится файл пакета и введите имя файла.

Использование ранее сохраненных пакетных настроек (файл .pba)

На странице Пакетные действия нажмите Загрузить пакет и перейдите в папку с файлом пакетных настроек.

1 Выберите Файл  Пакетная обработка , чтобы открыть диалоговое окно «Пакетная обработка».

Если требуется выбрать смежные файлы, удерживайте нажатой клавишу Shift при выборе. Чтобы выбрать несмежные файлы, удерживайте нажатой клавишу Ctrl при выборе.

Выбранные файлы отобразятся в списке Файлы для обработки диалогового окна «Пакетная обработка».

4 В окне группы «Режим сохранения» выберите один из следующих параметров.

• Создать тип : этот параметр выбирается чаще всего, и для него требуется только установить новый тип вывода в поле Тип окна группы «Параметры сохранения». Можно также указать, чтобы макрос запускался с этим параметром. При выборе этого параметра файл считывается, для него запускается макрос (если он задан), затем файл сохраняется в новое местоположение и/или с новым именем и преобразуется в новый формат.

• Копировать : при выборе этого параметра требуется, чтобы в окне группы «Макрос» был определен макрос. При выборе этого параметра файл считывается, для него запускается макрос, затем файл сохраняется в новое местоположение и/или с новым именем. Когда этот параметр выбран, поле Тип и кнопка Параметры в окне группы «Параметры сохранения» становятся недоступными.

• Перезаписать : при выборе этого параметра требуется, чтобы в окне группы «Макрос» был определен макрос. При выборе этого параметра файл считывается, для него запускается макрос, затем файл сохраняется в исходное местоположение (исходный файл перезаписывается). Когда этот параметр выбран, все настройки в окне группы «Параметры сохранения» становятся недоступными.

Примечание: Не все форматы файлов имеют связанные с ними параметры. Если параметры для выбранного формата файла отсутствуют, то кнопка Параметры будет недоступной.

6 Выберите параметры в окнах групп Формат и Кодирование .

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

Если не указана другая папка для вывода, программа Corel PaintShop Pro сохраняет преобразованные файлы в ту же папку, где находятся исходные файлы.

Запуск макроса во время преобразования формата файла

Установите флажок Использовать макрос в окне группы «Макрос» и выберите макрос в раскрывающемся списке.

1 Выберите Файл  Пакетная обработка , чтобы открыть диалоговое окно «Пакетная обработка».

• Чтобы выбрать смежные файлы, щелкайте их, удерживая нажатой клавишу Shift .

• Чтобы выбрать несмежные файлы, щелкайте их, удерживая нажатой клавишу Ctrl .

Файлы отобразятся в списке Файлы для обработки диалогового окна «Пакетная обработка».

6 В окне группы Режим сохранения выберите один из следующих параметров.

• Создать тип : запуск макроса и сохранение обработанного файла как файла другого типа. Нажав кнопку Обзор , файлы вывода можно сохранить в другую папку.

• Перезаписать : запуск макроса и сохранение файла в исходную папку с перезаписью исходного файла.

• Сохранить макрос : запуск макроса без сохранения файла. Этот параметр следует использовать, если сохранение файла выполняется макросом.

Если выбрать параметр Копировать , то можно переименовать преобразованные файлы, нажав кнопку Изменить , выбрав параметр в списке Параметры переименования и затем нажав Добавить . Можно переименовать файл, изменив текущую дату или время, имя документа, положение файла в процессе переименования или специальный текст.

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

7 Установите флажок Использовать макрос в окне группы «Макрос».

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

Остановка макроса при Corel PaintShop Pro возникновении ошибки программы

Установите флажок Запуск макроса в режиме «Автоматический» .

Читайте также: