Доброго времени, уважаемый коллега!
Скрипт, основанный на DOS-операторе FOR.
Создаётся пустой *.bat (или *.cmd) файл, содержащий одну строку (без перевода каретки):
FOR /r имя_диска:\полный\путь\"до места"\хранения\"файлового архива"\ %%f in (*.doc) DO START /WAIT C:\"Program Files"\"Microsoft Office"\Office14\WINWORD.EXE "%%f" /mKill_the_meta
В моём примере:
• команда FOR - позволяет организовать работу команд в цикле, то есть последовательно перебирает, от первого файла до последнего, в указанном каталоге;
• опция /r - заставляет перебирать от рутовой директории вниз, по дереву. В нашем примере, от имя_диска:\полный\путь\"до места"\хранения\"файлового архива"\ и вниз, сколько бы не было вложенных каталогов;
• %%f - переменная, принимает значения, которые определяются в блоке «in». В нашем примере находится выражение - «*.doc», которое определяет, что переменной присваиваются значения имен файлов с расширением .doc. Если указать - (*.doc *.docx ), то в переменной будут находиться имена файлов с расширениями *.doc и *.docx. Хотя в моем примере *.docx - "не пригодился": Ворд заходит во все свои документы и doc, и docx сам.
• DO START - запустить внешнее приложение. В нашем примере - это Ворд, размещенный по стандартному своему пути: C:\"Program Files"\"Microsoft Office"\"Office14"\WINWORD.EXE
• /WAIT - опция, говорящая нашему исполняемому, точнее батч-файлу о том, что он должен дождаться окончания выполнения вызванной им программы. По английски это звучит лаконичнее: /wait forces the batch file to halt processing until the called program has finished executing.
• /m - встроенная вордовская опция, открывающая файл одновременно с указанным VBA-скриптом. В нашем примере - Kill_the_meta, показанный Вам выше.
НЮАНСЫ: DOS не понимает пробелы в именах директорий (папок). Для того, что б "понимал" - необходимо заключать такие имена в кавычки: например, \полный\путь\"до места"\хранения\
Созданный нами файл *.bat (или *.cmd) запускаем с помощью любой консоли DOS, например: Правой кнопкой мыши на кнопке "Пуск" —> Выполнить —> Обзор —> Открыть.
Благодаря связке (DOS + VBA), один скрипт последовательно открывает указанные файлы (и дожидается их завершения) в указанных каталогах, а другой - совершает с этими файлами, оговоренные макросом, действия. Скрипт работает очень быстро, глазами не уследить как, и с сетевыми ресурсами (т.е. поенимает UNC-имена).
Из минусов — два нюанса:
- прервать выполнение программы можно только комбинацией «Ctrl + Break»;
- нет реакции на файлы "Только для чтения": макрос VBA наталкивается на такие и ждет реакции пользователя, а не продолжает обработку. Приходится их схлапывать руками и возвращаться к ним уже потом, вручную.
Надеюсь, что это будет кому-то полезно.
Я сам прихожу!