Статьи из блога
Массовое форматирование документов
Время от времени пользователям редактора Word требуется изменить что-то (текст, форматирование) сразу в нескольких документах, без необходимости работы с каждым документом по отдельности. В качестве примера могу привести Макрос пакетной замены, с помощью которого возможно искать и менять какой-то единый текст во многих документах одновременно.
И вот недавно ко мне обратился Дмитрий с просьбой помочь ему в аналогичной ситуации. Он спрашивал:
Дано очень много файлов формата rtf и doc. Необходимо их отформатировать разом, не открывая каждый в отдельности, а именно: изменить во всех размер шрифта на 12, поставить абзацы 1.25, сделать times new roman, изменить поля, покрасить текст в черный, интервал одинарный. Помогите, пожалуйста!
Я предложил Дмитрию воспользоваться следующим макросом (см. код ниже). Но затем подумал, что пользователям наверное было бы удобнее использовать специальную форму для выбора необходимых параметров форматирования текста, нежели копаться в коде макроса и менять эти параметры вручную.
Я разработал такую форму и включил ее в шаблон. Шаблон (предназначенный для редактора Word 2003) имеет дополнительную панель инструментов с кнопкой "Массовое форматирование документов":
Чтобы иметь возможность подключать эту форму (шаблон) только тогда, когда это необходимо, вам нужно будет разместить файл шаблона (batchFormatDocs.dot) в стандартную папку с шаблонами Word:
C:\Documents and Settings\ИМЯ_ПОЛЬЗОВАТЕЛЯ\Application Data\Microsoft\Шаблоны\.
Как только форма становится нужна, вы открываете меню Сервис, выбираете команду Шаблоны и надстройки и в открывшемся окне нажимаете кнопку Добавить:
Откроется стандартное окно выбора файлов, в котором вы должны найти файл шаблона (если вы добавили его в папку с шаблонами, как описано выше) и выбрать его. В результате шаблон появится в окне и будет доступен:
Форма простая и содержит лишь некоторые параметры форматирования. Я не сторонник ручного форматирования текста - лучше и правильнее создать соответствующие стили. Но иногда это невозможно и проще (быстрее) форматировать документ по-старинке.
В общем виде форма выглядит так:
Вводите значения в соответствующие поля, выбирайте параметры из полей списков и нажимайте кнопку Применить.
Когда вы закончите работу по форматированию, вы можете выгрузить шаблон. Для этого достаточно снять флажок с имени шаблона в окне Шаблоны и надстройки.
Напоминаю, что шаблон позволяет произвести форматирование текста во многих документах одновременно (без открытия этих документов). Будут отформатированы документы с расширениями doc, rtf и docx, находящиеся в одной папке (а если отмечен флажок "Включая подпапки", то и в дочерних). Процесс форматирования скрыт от пользователя, но по окончании выскочит окошко с уведомлением о завершении процесса форматирования.
Скачать архив шаблона "Массовое форматирование документов" вы можете на странице Полезности Word или прямо отсюда:
Код макроса по параметрам Дмитрия:
Sub batchFormating() 'массовое форматирование документов, находящихся в одной папке Dim myFile As String Dim myDoc As Document Dim path As String Dim fDlg As FileDialog Dim ext() As Variant Dim i As Long On Error Resume Next 'msoFileDialogFilePicker – позволяет пользователям выбрать один или более файлов. 'Пути к файлам, выбранным пользователям, сохраняются в коллекции элементов FileDialogSelectedItems Set fDlg = Application.FileDialog(msoFileDialogFolderPicker) 'Выбираем папку с файлами для форматирования With fDlg .Title = "Выберите папку, содержащую документы и нажмите ДА" .AllowMultiSelect = False .InitialView = msoFileDialogViewList If .Show <> -1 Then MsgBox "Отменено", , "Массовое форматирование" Exit Sub End If path = fDlg.SelectedItems.Item(1) If Right(path, 1) <> "\" Then path = path + "\" End With 'Закрываем любые открытые документы If Documents.Count > 0 Then Documents.Close SaveChanges:=wdPromptToSaveChanges End If ext = Array("*.doc", "*.rtf") 'Заносим в массив типы расширений For i = 0 To UBound(ext) 'Запускаем цикл обхода файлов с расширениями из массива 'Заносим в переменную полный путь к первому файлу в папке, 'имена следующих файлов будут получены в цикле функцией Dir$() без аргументов myFile = Dir$(path & ext(i)) 'Запускаем цикл обработки каждого файла в папке While myFile <> "" 'Открываем каждый файл без видимости для пользователя Set myDoc = Documents.Open(path & myFile, Visible:=False) 'Изменяем форматирование каждого файла With myDoc With .Range With .PageSetup .LeftMargin = CentimetersToPoints(2) .RightMargin = CentimetersToPoints(1) .TopMargin = CentimetersToPoints(1) .BottomMargin = CentimetersToPoints(2) End With .Paragraphs.FirstLineIndent = CentimetersToPoints(1.25) .ParagraphFormat.LineSpacingRule = wdLineSpaceSingle With .Font .ColorIndex = wdBlack .Name = "Times New Roman" .Size = 12 End With End With .Close SaveChanges:=wdSaveChanges End With myFile = Dir$() 'получаем следующее имя файла из папки Wend Next i Set fDlg = Nothing Set myDoc = Nothing End Sub
Метки: макросы | поиск и замена | стили | форматирование | шаблоны
Просмотров: 68272
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 250 бесплатных шаблонов для MS Office
- 3 способа очистки списка недавно открытых документов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 97. Слияние документов как один из способов упростить свою работу
- Абзац с цветным фоном
- Автозаполняемые колонтитулы
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Автоформат документов
- Буквица
- Быстрая смена ориентации страниц документа
- Быстрое изменение стиля форматирования текста
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрое удаление границ у таблицы
- Быстрый ввод текста с помощью команды =rand()
- Быстрый доступ к папке с шаблонами Word
- Быстрый поиск форматированного текста
- В чем различие между Автозаменой и Автотекстом
- В чем различие между стилями Обычный (Normal) и Основной текст (Body Text)?
Комментариев: 70
А для Word 2007 нет макроса или dot'а?
Собственно, тот макрос, который приведен в заметке, будет работать и в 2007. Если так уж сильно нужна кнопка (с шаблоном) для Word 2007, могу сделать...
Антон, спасибо, кнопка не очень нужна. Макрос хорошо работает в Word 2007. Спасибо!
Замечательная форма и макрос, но они ограничены. А что, если пользователю понадобится изменить какие-нибудь другие параметры документа? Может быть, универсальнее было бы использовать текущий документ как образец, по которому отформатировать все остальные? Это, к сожалению, только идея.
Леонид, я тоже думал об универсальности макроса, когда создавал. Но понял, что необъять необъятное и решил остановиться только вот на самых-самых (по своему разумению) часто используемых операциях форматирования.
Антон,
скажите пожалуйста, а если мне нужно в нескольких документах заменить определенную фразу, которая во всех документах присутствует, есть ли какои-нибудь способ сделать ето без работы с каждим документом в отдельности?
Спасибо,
Аня
Аня, читайте вот эту заметку.
спасибо за очень полезную программу! экономит кучу времени
давно искал такой макрос пакетный...
есть одно пожелание, здорово бы сделать чтобы можно было не только в самой папке файлы менять, но и во всех находящихся там под-папках тоже! вот например у меня есть папка "сентябрь", а в ней папка "01", "02" и так до 30! и в каждой файлы которые надо обработать.... вручную получается долго, а ведь наверняка можно чуть-чуть изменить Вашу программу - и она сможет выискивать файлы во всех подпапках тоже!
не подскажите, что для этого нужно внести в код? (именно в вариант с кодом макроса, а не в версию с шаблоном и меню) чувствую, что принципиально менять ничего не нужно, но к сожалению моих знаний программирования не хватает чтобы самому добавить нужные параметры... спасибо!
Антон, я поправил шаблон (код в шаблоне пришлось переделать) и теперь можно отметить флажком, если нужно "шерстить" и подпапки в выбранной папке. Скачивайте обновленный шаблон в разделе Полезности Word.
большое спасибо!!!
я, честно говоря, даже не ожидал что Вы так быстро ответите на мой вопрос! очень полезная доработка, и я уверен что не одному мне она понадобится, часто приходится сразу с группой файлов работать!
еще раз спасибо за сэкономленные часы! теперь буду всем друзьям рекомендовать этот ресурс)
пытаюсь собственноручно написать макрос для word, который бы форматированл бы исходный текст по правилам ГОСТ (заголовки, таблицы, списки, картинки, шрифты и т.д). Все характеристики форматирования жестко заданы.
Я решил для начала создать шаблон, где будут заданы параметры страницы, формат шрифта и т.д.
Затем хочу вставить необходимый мне текст, и дальше уже формировать заголовки, таблицы...
Вопрос по шаблон. Создаю шаблон. Задаю необходимые параметры. Сохраняю. Открываю необходимый документ - лезу в "шаблоны и надстройки", выбираю шаблон, но текст не изменяется. Что не так делаю?и Что не так понимаю? =)
darklumen, текст и не может измениться. Но вы, вероятно, имеете ввиду не текст, а стиль, которым оформлен текст...
Так стиль нужно применять к тексту - он тоже сам не изменится. Переопределяйте стили.
А если вы вставляете текст в документ, созданный на основе вашего шаблона, то если бы стили вашего шаблона были бы закрыты, то применялись бы только ваши стили (созданные вами).
Найдите здесь заметки на эту тему и почитайте.
Я не нашла на сайте, где вопрос можно задать, поэтому напишу здесь. Мне очень нужно знать, как сделать шаблон с полями, чтобы "информация из таблицы Word или Excel вставлялась внутрь шаблона. Например, захотели адрес конторы поменять - раз и 100 приказов со всеми сотрудниками изменились"(цитата). Я шаблон обычный умею делать, но чтоб информация сразу в нескольких файлах изменялась, созданных по 1 шаблону, не знаю как. Так вообще возможно сделать? Мне не у кого больше спросить, помогите пожалуйста!
Антон,
помогите пожалуйста, необходимо изменить параметры шрифта у всех слов документа, длинна которых равна 6. Значения параметров шрифта: Гарнитура шрифта Tahoma, Начертание Курсив, Размер 16, Цвет Коричневый. Назначить макросу кнопку в документе ( скажите пожалуйста как создать кнопку в документе).
Спасибо,
Дмитрий
Наталья, если я правильно вас понял, то на основе своего шаблона вы создали 100 приказов (документов). И теперь вам нужно изменить в этих 100 документах (но не в самом шаблоне - единственном файле) какую-то часть текста. Верно?
Если так, то в этой статье есть даже ссылка (в начале) на подходящий макрос для этих целей: http://wordexpert.ru/page/poisk-i-zamena-teksta-vo-mnogih-dokumentah-odnovremenno
Дмитрий, попробуйте такой макрос (наскоро слепленный):
По поводу кнопки для макроса написано здесь: http://wordexpert.ru/page/nastroykaword
Наталья, может быть вам нужно использовать слияние? Если есть база данных с сотрудниками, то можно генерировать несколько документов, подставляя в нужные места поля базы данных. В качестве базы данных можно использовать таблицу Excel
Да Антон, Вы правильно поняли, это требование работодателя, чтобы я умела так делать, раньше с этим я никогда не сталкивалась и глубоко Word не изучала, спасибо большое за помощь! Надеюсь у меня всё получится.
Александр, т.е. это слияние позволяет вставлять текст из таблиц в шаблон? обязательно попробую так, спасибо за помощь!
Да, но всё зависит от того, как представлены данные в таблице Excel.
Я не знаю как они могут быть там представлены, просто это требование моего работодателя (будущего), чтобы я так умела, а я ни в одном самоучителе не могу ничего подобного найти.
Антон, скажите пожалуйста, т.е. этот макрос разработал программист, видно это не так легко и я врятли смогу повторить и показать потом поэтапно как этот макрос был записан? его можно использовать только готовым и самим повторить нельзя?
Наталья, вы скачайте шаблон и с его помощью заменяйте фрагменты текста. Но, похоже, что вы путаете "шаблон" с "документом". Шаблон - это образец, на основе которого создаются документы. В него можно вносить изменения вручную, а вот изменения в документы (речь идет о нескольких документах сразу) лучше вносить через указанный макрос.
Да я понимаю всё это, просто мне надо будет показать как я это сделала, я же не могу сказать да вот я скачала тут чужой макрос и воспользовалась им а сама не особо понимаю как он был создан. я конечно могу записать простейший макрос, но такой....
Наталья, ну вы же не на экзамене Макросы и шаблоны (пусть и чужие) и предназначены, чтобы облегчать работу других людей. Их ведь не только (и не столько) для себя пишут.
Я не думаю, что если вы честно скажете руководителю, он возмутиться и заставит вас изучать программирование...
П.С. Понял, что вы устраиваетесь на работу (не вник сначала). Тогда это экзамен. Но все равно, скажите, что можно использовать либо функцию встроенную "Найти и заменить" для этих целей, либо воспользоваться готовыми разработками.
Да я еле разобралась как этот макрос себе записать, а уж как их делать подавно не пойму. Спасибо большое, Вы мне очень помогли! щас попробуем что получилось.
Ой, получилось, так здорово, спасибо большое!!!!!!!!!!!
Функция Найти и заменить действует же только в пределе 1 документа (?), а это надо чтобы в разных документах изменялось.
Верно. Вот видите, все знаете сами Удачи!
Спасибо!
Спасибо большое за макрос! А насчет кнопки для макроса, я имел ввиду кнопку не на панели инструментов, а кнопку в самом документе.
И еще, подскажите пожалуйста книжку о подробном описании кодов макросов.
Дмитрий, и об этом есть информация на сайте: Вставка текста с помощью кнопки.
П.С. Пользуйтесь поиском по сайту.
Дмитрий, можно вставить кнопку и в текст документа. Откройте Control Toolbox тулбар (не знаю, как по-русски . Для этого щёлкните правой кнопкой мыши по имеющемуся тулбару и выберите из списка Control Toolbox. В этом тулбаре нажмите на кнопку Command Button, кнопка появится в документе. Щёлкните правой кнопкой мыши на появившейся кнопке и выберите Properties. Изменив свойство Caption, вы измените надпись на кнопке. Сделайте двойной щелчок на кнопке - откроется окно кода с процедурой обработки щелчка по вашей новой кнопке. Впишите туда вызов нужного макроса. Вот и всё.
Проще было сделать макрос для пакетной обработки документов заданным макросом.
А уж то, что кому надо тот макрорекордером в свой макрос запишет.
Вождь, в двух оставленных вами комментариях на сайте содержится откровенная насмешка и язвительность. Зачем?
Не все пользователи знают и могут (хотят) самостоятельно записывать макросы.
Или это все ради рекламы вашей "Методички"? Можно было бы просто написать мне и попросить сделать обзор...
Здесь не нужно показывать свою "крутость", достаточно просто помочь, подсказать.
Ответ на сообщение: 2010-01-02 в 10:00:56 | Антон Кокин
Насмехаться не собирался. Советовать люблю, но сдержал себя и отправил всего два сообщения
Рекламой я не занимался, а одну ссылку дал исключительно по делу.
Как адаптировать этот шаблон (чтобы кнопка была и работала) для Word 2007? Уж очень хочется.
А ещё: не подскажете, как перевести все файлы определённой папки из *.rtf в *.doc?
После нажатия кнопки выдается следующее сообщение:
License information for this component not found. You do not have an appropriate license to use this functionality in
the design environment.
Что нужно сделать, чтобы все было нормально?
Попробуйте подключить файл (библиотека) Microsoft Scripting Runtime. Откройте редактор VBA (ALT+F11), зайдите в меню Tools, выберите команду References, найдите в списке библиотек Microsoft Scripting Runtime и установите у нее флажок.
Закройте все окна и запустите документ вновь.
Нашел в списке библиотек Microsoft Scripting Runtime и установил у нее флажок.
Выскакивает тоже сообщение. Ув. Антон помогите!
Артем, сложно сказать что-то определенное, так как не сталкивался. Но вот что обнаружил через Гугл(посмотрите, может что-то поможет):
PRB: "License Information for This Component Not Found" Error
[RESOLVED] Licence Information For This Component Not Found (речь идет о файле для VB)
Не запускается .*ехе на компьютере, где не установлен VB
Запускаю макрос на Word 2007 выдает ошибку:
Could not load an object because it is not available on this machine
Подскажите в чем проблема ?
Скачайте макрос по-новой и проверьте. Александр Витер внес изменения в шаблон поэтому все должно работать корректно.
Да, действительно работает. Большое спасибо !
Подскажите, а каким образом провести поиск и замену стилей? Например в тексте документа имеются маркированные списки, но они имеют стиль "Обычный". Требуется применить к ним стиль "Маркированный список". При использовании контекстного меню "Выделить текст, имеющий такой же формат" происходит выделение всего текста.
А как удалить массово картинки??? которые вставлены в документ?
Михаил, маркированные списки - это списки, у которых имеются маркеры (значки). Каким образом у вас маркированы списки, если они оформлены стилем "Обычный"?
Мне представляется, что вам нужно вручную выбирать ваши списки и применять к ним соответствующий стиль, то бишь "Маркированный". А как иначе вы сможете отобрать ваши списки, если и остальной текст у вас тоже оформлен стилем "Обычный"? Никак.
Большое спасибо, узнал много нового.
Подскажите, пожалуйста, как можно перевести весь текст в форматирование тремя стилями: Заголовок1, Заголовок2, Обычный. Я уже разобрался, как настроить стили нужным образом программно, но проблема в том, что надо сохранить начертание (жирный, курсив и т.п.)... Дело в том, что если текст в Обычном стиле сделать жирным, в окне стилей он продолжает отображаться как текст в Обычном стиле, но если при этом снова применить Обычный стиль, жирность пропадет. Как привести текст к одному стилю и сохранить начертание?
Добрый день!
Замечательный макрос, очень здорово, что вы создали такой. Спасибо!
Но в Ворде 2010 возникает ошибка при попытке выбрать папку, выскакивает окно:
Microsoft Visual Basic for Applications....
Compile error:
Can't find project or library
показывает весь код и подсвечивает строку "Private Sub btnSelectDir_Click()"
возможно у меня какие то проблемы??
Замечательный макрос и очень мне нужный. Спасибо!
Только в Word 2010 x64 совершенно не хочет работать. Требует обновить макрос под х64.
И еще. Можно ли добавить параметр "Другие размеры страницы"
Заранее спасибо.
Да, очень полезная штука! Может пригодиться.
Здравствуйте, Александр.
Немного поздно я нашел Вашу статью, но попробую задать свой вопрос, вдруг ответите?
Есть word-2010. В нем я создал макрос, форматирующий текст файла. Но, для форматирования, каждый файл нужно открыть и запустить макрос, потом - закрыть файл, сохранив изменения, открыть следующий, и т.д.
Ваш макрос работает пакетно.
Как преобразовать существующий макрос "индивидуальный", в подобный пакетный макрос?
Спасибо.
Доброго времени суток.
В ворде 2010 данный макрос не захотел работать. Пользуюсь "Кодом макроса по параметрам Дмитрия". Работает все отлично. Только не могу найти надстройку, как сделать чтобы он искал в подпапках, а не в одной.
С уважением, Николай.
Да действительно в word-2010 не работает вылетает ошибка при выборе папки
Добрый день,
нет ли возможности изменить шаблон так, чтобы можно было обрабатывать документы на всех уровнях подпапок? Он работает только с подпапками в задаваемой папке, а как расширить область работы до папок в этих самых подпапках? Есть ли вариант решения?
Заранее спасибо,
Ольга
Здравствуйте! При нажатии кнопки, с помощью которой нужно выбрать папку с документами для форматирования выдает ошибку от Майкрософт Вижуал Бэйсик: Ошибка компиляции в скрытом модуле: frmBatchFormat.
тоже ошибка, когда вхожу в выбор папки
Compile error in hidden module: frmBatchFormat
Мне нужна помощь знатоков Ворда. Работаю с версией 2003. Проблема такая. Нужно заменять один стиль форматирования абзаца другим много раз в разных документах. Пишу макрос. При записи макроса, естественно, требуемая операция производится вручную и всё работает. Но затем я включаю макрос, и он ничего не делает. То есть, никакой требуемой замены стилей не производит. То же самое -- с заменой цвета текста. Помогите...
Искал подобное решение и наткнулся на данную тему. Попробовал, да работает замечательно, но есть одно но - в колонтитулах не отрабатывает :(
Такая же ошибка, когда вхожу в выбор папки:
Compile error in hidden module: frmBatchFormat
использую Word 2007
Добрый день! Тоже столкнулась с проблемой массового форматирования, но вот какого плана: в каждом документе есть таблица, в которой есть нумерация, но нумерация нарушена, т.е. 1,2,3… и снова 1,2,3… а надо чтобы номера шли по порядку. Исправить в одном документе это не проблема, но когда таких документов более 1000, то тут хватаешься за голову. Подскажите, пожалуйста, как решить эту проблему.
Добрый вечер!У меня выбиваэт такая штука compile error in hidden module: macros. this error commonly occurs when code is incompatible with the version,platform,and architecture,of this application в Exel 2010,как ето исправить? буду очень благодарен.
Здравствуйте. А есть ли такой макрос, чтобы не изменять, а вставлять нужный текст(который можно подправить), в множество файлов doc. Мне вот к примеру нужно вставлять дату и ещё кое что в конец файлов doc в которые я каждый день добавляю новые записи.
Спасибо большое за такой полезный макрос!
Добрый вечер! А как сделать так, что бы кнопка для массового форматирования появлялась в 10 версии Word? Буду очень благодарна если выложите бета версию.
Я не то что чайник,я просто-самовар в Интернете.13 января 2017 года я на что то нажала,и у меня в документе исчезла функция"ФАЙЛ"со всеми входящими в эту функцию действиями.В поисковике задавала вопросы,но меня просто не понимают: пишут ответ:нажмите на ФАЙЛ и у вас всё получится.Но,нажимать-то НЕ НА ЧТО. Потом решила из настройки"вытащить"ПАРАМЕТРЫ СТРАНИЦ,Предварительный просмотр, печать,и всё это я поставила на месте файла и успокоилась.Но когда я открыла несколько других документов и увидела,что у них тоже исчез"ФАЙЛ",мне пришлось вызывать компьютерщика.Он поставил другой ВОРД 2003г.всё нормально.На одном документе-убрала масштаб,гиперссылку и т.п.Всё в порядке.Открыла остальные документы-у них у всех убралось ВСЁ то, что я убрала в одном.Почему они стали зависимы друг от друга?
Ссылка нерабочая( 25.09.2009 в 16:08 | #9
обновленный шаблон в разделе Полезности Word.
Ссылка нерабочая( 25.09.2009 в 16:08 | #9
обновленный шаблон в разделе Полезности Word.
Здравствуйте. Может и мне поможете..
Имеется вордовский файл, в нём нужно в шапке документа пару строк удалить, потом в середине документа пару строк добавить, и в конце документа пару строк заменить. Документ создаётся спец. программой.. поидее нужно настраивать шаблоны в этой программе, но увы.. начальство в другом городе не даёт добро. Поэтому каждый раз приходится менять вручную.. Возможно ли написать такой макрос? и назначить его на кнопку в панели ворд, чтобы работники не мучались редактированием файла каждый раз, а нажимали на эту кнопочку.. выполнялся макрос.. и вуаля .. подскажите..