Замена текста макросом word

Студворк — интернет-сервис помощи студентам

На просторах интернета нашел вот такой макрос

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Sub FindInStories()
  Dim myStoryRange As Range
  For Each myStoryRange In ActiveDocument.StoryRanges
    With myStoryRange
      With .Find
        .Text = "ааа"
        .Replacement.Text = "ооо"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
      End With
      While Not (.NextStoryRange Is Nothing)
        Set myStoryRange = .NextStoryRange
        With .Find
          .Text = "ааа"
          .Replacement.Text = "ооо"
          .Forward = True
          .Wrap = wdFindContinue
          .Format = True
          .MatchCase = False
          .MatchWholeWord = False
          .MatchWildcards = False
          .MatchSoundsLike = False
          .MatchAllWordForms = False
          .Execute Replace:=wdReplaceAll
        End With
      Wend
    End With
  Next myStoryRange
End Sub

Данный макрос делает замену текста во всем документе и даже в колонтитулах, что для меня очень удобно. Но в маем случае нужен вариант когда нужно ввести текст на который необходимо заменить.
Я вставлял в .Replacement.Text = «ооо» вот так .Replacement.Text = InputBox(«введите № «), и окно выскакивал постоянно, сколько замен он бы не делал, и в каждом я набирал текст замены.
Можно ли сделать так, что бы я ввел один раз и он далее подставлял везде это.
Заранее спасибо.

По просьбам читателей сайта Александр Витер разработал свой вариант макроса пакетной замены фрагментов текста в документах Word. Об этом его просили в комментариях к заметке Поиск и замена текста во многих документах одновременно.

Александр предлагает скачать (ниже) бета-версию его разработки кто заинтересован в подобном решении. Вот, что он предлагает.

Это третья бета-версия макроса пакетной замены. Теперь ее нужно тестировать.

Что уже сделано:

1. Доработан механизм поиска в документе. Текст можно заменять как в основном тексте, так и в надписях, в гиперссылках и объектах WordArt.

2. Добавлены опции «Учитывать регистр» и «Слово целиком».

3. Если файл доступен только для чтения, то он просто пропускается. Запись об этом делается в лог-файл. Таким образом, можно работать и с документами в локальной сети.

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

5. Каждый сеанс поисказамены записывается в подробный лог-файл с указанием документа, проведенных в нем замен, затраченного времени и настроек замены.

6. В процессе поисказамены отображается прогресс-бар.

Я со своей стороны провел тесты, у меня ошибок не возникает. Возможные ошибки я постарался предусмотреть, но над этим еще нужно будет работать.

Итак, пожалуйста скачивайте макрос и пробуйте его в деле. Все замечания по макросу (ошибки, предложения) пишите в комментариях к этой заметке.

ВикиЧтение

VBA для чайников
Каммингс Стив

Поиск и замена текста с помощью VBA в Word

Хотя это звучит и несколько необычно, но Find — это объект Word VBA. Объекты Find принадлежат диапазонам и выделенным областям. Для обнаружения или форматирования текста с помощью объекта Find вам потребуется выполнить следующие действия.

1. Получите доступ к объекту Find для определенного диапазона или выделенной области. Если вам необходимо просмотреть целый документ, используйте свойство Content объекта Document для получения доступа к соответствующему диапазону, как показано ниже:

ActiveDocument.Content.Find

2. Определить свойства объекта Find в соответствии с тем, что же вы ищете и как именно вы хотите проводить поиск.

3. Вызвать метод Execute объекта Find. Соответствующий пример приведен ниже:

With OpenRange.Find

.Clear Formatting

.Text = «pogosticks»

.Execute

End With

Для свойств, значения которых явно вы задать не можете, объект Find выбирает параметры, использованные последними или те, которые в настоящий момент заданы в диалоговом окне Найти и заменить программы Word. Именно по этой причине вам всегда следует включать метод Clear Formatting перед началом нового поиска- он позволяет убрать все ранее определенные для проведения поиска параметры форматирования.

Работа с найденным текстом

Основная работа метода Execute — обнаружение первого экземпляра искомого текста или форматирования в указанном диапазоне или выделенной области. После выполнения этого метода вам прежде всего следует определить, было ли найдено то, что вы ищете. Для подобной проверки используйте свойство Found объекта Find совместно с инструкцией If…Then, как показано на примере следующей заготовки программного кода:

If .Found = True Then

(выполнение определенных действий с найденным текстом)

Else

(отображение соответствующего сообщения)

End If

Если метол Execute нашел необходимый текст, исходный диапазон или выделенная область переопределяются таким образом, чтобы содержать найденный текст. Это очень важный момент, поскольку это означает, что вы можете работать с найденным текстом посредством свойств и методов исходного объекта. В следующем примере, представляющем собой расширенный вариант первого фрагмента кода из настоящего раздела, инструкция .Parent. Italic = True обращается к родительскому объекту по отношению к объекту Find, т.е. диапазону OpenRange. При выполнении этой инструкции диапазон OpenRange теперь содержит только найденный фрагмент текста, так как только в нем предусмотрено форматирование курсивом:

With OpenRange.Find

.СlearFormatting

.Text = «pogosticks»

If .Found = True Then

.Parent.Italic = True

Else

MsgBox «No pogosticks found.»

End If

End with

Объект Reolacement принадлежит (а значит, является его свойством) объекту Find. При написании кода для операции поиска и замены вам следует задать свойства и выполнить методы объекта Replacement.

Следующий фрагмент кода заменяет все экземпляры фразы pogosticks словом skateboards. Выделенная область изменяется при выполнении критерия поиска, поскольку доступ к объекту Find осуществляется через объект Selection:

With ActiveDocument.Content.Find

.ClearFormatting

.Text = «pogosticks»

With .Replacement

.ClearFormatting

.Text == «skateboards»

End With

.Execute Replace := wdReplaceAll

End With

Обратите внимание на то, что метод Execute может использовать аргумент Replace, предназначенный для контроля за тем, будут ли заменены все обнаруженные экземпляры обнаруженного фрагмента текста, или только первый.

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

Поиск и замена данных

Поиск и замена данных
В программе HtmlPad реализована возможность быстрого поиска данных. Этот механизм полезно использовать при работе с большими программными кодами или с большими объемами данных, поскольку поиск требуемой информации вручную (например, путем просмотра

Поиск и замена данных

Поиск и замена данных
В программе Extra Hide Studio имеется удобный механизм для быстрого поиска и замены данных. Эта возможность особенно актуальна при работе с большими исходными кодами, поскольку поиск данных путем просмотра всего кода может занять слишком много времени, и к

Глава 2 Подготовка текста в Microsoft Word

Глава 2 Подготовка текста в Microsoft Word
• Общие сведения о Word 2007• Основные правила форматирования• Вставка стандартных блоков в документ• Нумерация страниц и колонтитулы• Проверка правописания, поиск синонимов, перевод слов• Сноски и закладки• Настройка параметров

3.1. Поиск и замена фрагментов

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

Поиск и замена текста

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

Поиск и замена форматирования

Поиск и замена форматирования
Для поиска текста с определенным форматированием используйте свойства объекта Find, касающиеся форматирования. Они идентичны свойствам, используемым при работе с форматированием диапазона или выделенной области, как я уже отмечал в разделе

Автоматический поиск и замена данных

Автоматический поиск и замена данных
В процессе работы иногда возникает необходимость быстро найти те или иные данные (слово, текстовый фрагмент и т. д.) либо заменить одни данные на другие. Для решения такой задачи в Publisher 2007 реализован механизм автоматического поиска и

Поиск и замена

Поиск и замена
В новой версии Excel был полностью изменен пользовательский интерфейс и расширены функциональные возможности средства Найти и заменить. Теперь можно с помощью одной операции производить поиск и замену по всем листам книги, повторно выполнять запросы поиска

Поиск и замена символов

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

Глава 2 Подготовка текста в Microsoft Word

Глава 2
Подготовка текста в Microsoft Word
Microsoft Word – пожалуй, самая популярная на сегодняшний день программа, предназначенная для работы с текстами. Продукт компании Microsoft обладает всеми необходимыми возможностями, связанными с набором и правкой текстов любой сложности.

5.7. Поиск и замена

5.7. Поиск и замена
В документе можно производить автоматический поиск текста и замену его другим.Поиск и замена ведется по введенному образцу. Если в качестве образца указано слово «ход», то компьютер найдет и слово «пароход», если предварительно не поставить условие, что

13.3.4. Поиск и замена текста

13.3.4. Поиск и замена текста
Как вы уже догадались, окно Найти и заменить используется не только для перехода на нужную страницу. Вкладка Найти используется для поиска текста. Для быстрого доступа к этой вкладке нажмите Ctrl+F или выберите команду меню Правка, Найти. Нажмите

Поиск и замена

Поиск и замена
Для поиска в тексте документа нужного слова или сочетания символов служит окно поиска и замены (рис. 9.19), которое открывается нажатием Ctrl+F. Если надо, чтобы оно сразу открылось как окно замены, используйте сочетание Ctrl+H.

Рис. 9.19. Окно поиска и замены.Для

Поиск и замена фрагментов фильма

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

Поиск и замена текста

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

Поиск и замена данных

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

Массовый поиск и замена в документах MS Office (Word и Excel)

Имеется большое количество документов Word или Excel и в каждом документе нужно
изменить несколько фраз. В каждом документе через замену (Найти и заменить ) это слишком долго.

Решение:

  1. Вариант с использованием макроса
  2. a) для Microsoft Excel:
    Скопировать макрос в папку с файлами, запустить макрос, задать условия замены, заключая их в кавычки.
    выбрать любой файл из папки.

    Программа пройдётся по всем листам всех книг (*.xls;*.xlsx) в этой папке,
    и поменяет текст в заданной графе. Недостатком способа очевиден –
    замена производится только в указанной графе.
    Скачать макрос можно по ссылке

    б) для Microsoft Word:
    Создать новый документ Word, открыть редактор Microsoft VBA, добавить
    новый модуль, скопировать текст процедуры ниже. О том как создать макрос более подробно написано
    здесь.
    При выполнении макроса нужно выбрать файлы, данные в которых подлежат замене:

    Что изменить и на что изменить прописывается в теле макроса:
    что_заменить = «123»
    чем_заменить = «1234»

    Сам макрос:

  3. В виде приложения

Для документов Word подойдет @Text Replacer — бecплaтнaя пpoгpaммa для быcтpoгo пoиcкa и зaмeны
тeкcтa в фaйлax из выбpaннoй пaпки и влoжeнныx пoдпaпoк.
Работает с дoкумeнтaми тeкcтoвoгo peдaктopa Word: *.doc, *.docx, *.rtf, фaйлaми тeкcтoвoгo фopмaтa:
*.txt, *.ini, *.html, *.php и дp., paбoтa c кoтopыми вoзмoжнa чepeз cтaндapтный Блoкнoт Windows.
Вce фaйлы дpугиx типoв oбpaбaтывaютcя пpoгpaммoй кaк тeкcтoвыe.

Пpoгpaммoй пoддepживaeтcя пoиcк и зaмeнa мнoгocтpoчныx фpaгмeнтoв тeкcтa c учeтoм peгиcтpa и
игнopиpуeмыx cимвoлoв — тaкиx кaк пpoбeлы и пepeвoды cтpoки (windows / *nix).
Программа бесплатная, скачать можно по
ссылке
с официального сайта программы

Не пробуйте @Text Replacer для документов Excel – программа их портит!

Для документов Excel попробуйте FireBall.exe – небольшую программу, не требующую установки.
Файлы Excel необходимо скопировать в папку с FireBall.exe.

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

Яндекс.Метрика

Макрос VBA для Word (редактирование текста)

Visual Basic for Applications (VBA, Visual Basic для приложений) — немного упрощённая реализация языка программирования Visual Basic, встроенная в линейку продуктов Microsoft Office.

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

Например, можно автоматизировать обработку содержимого ячеек в Excel или ускорить исправление ошибок оформления документов в Word. Написание макросов для Excel пользуется популярностью у продвинутых пользователей Microsoft Office. Кому-то удается научиться этому самостоятельно, а кто-то записывается на курсы Excel в Алматы или в своем городе.

Созданные программы на языке VBA называются макросами.

Попробуем создать простой макрос обработки текста в Word.

Для начала стоит понять какая последовательность действий прописывается в макрос с помощью макрорекордера (инструмент для записи ваших действий с помощью кода VBA).

Для примера найдем все точки в тексте и заменим их на запятые. Заходим на вкладку Разработчик -> Код -> Запись макроса.

Теперь перейдем на вкладку Главная -> Редактирование -> Заменить.
Вводим «.» в поле Найти и «,» в поле Заменить на. Жмем Заменить все.

Теперь останавливаем запись макрорекордера командой Разработчик -> Код -> Остановить запись.

Это все! Ваш первый макрос готов. Давайте же посмотрим на него. Заходим Разработчик -> Код -> Visual Basic.
В окне редактирования кода появится такая штука:

Sub Макрос1()
'
' Макрос1 Макрос
'
'
 Selection.Find.ClearFormatting
 Selection.Find.Replacement.ClearFormatting
 With Selection.Find
 .Text = "."
 .Replacement.Text = ","
 .Forward = True
 .Wrap = wdFindContinue
 .Format = False
 .MatchCase = False
 .MatchWholeWord = False
 .MatchWildcards = False
 .MatchSoundsLike = False
 .MatchAllWordForms = False
 End With
 Selection.Find.Execute Replace:=wdReplaceAll
End Sub

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

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

Для поискомого и заменяемого текста в макросе используются следующие строки

.Text = "."
.Replacement.Text = ","

Использованные конструкции регулярных выражений приведены в таблице.

Что изменяем Найти Заменить на
убрать пробелы между словом и точкой "([а-я]) @(.)" "12"
добавить пробел между точкой и следующим предложением "([а-я].@)([А-Я])" "1 2"
убрать пробелы между словом и запятой "([а-я]) @(,)" "12"
добавить пробел между запятой и следующим словом "([а-я],)([а-я])" "1 2"
убрать пробелы между точкой и переходом на следующую строку "(.) (^13)" "12"
убрать повторяющиеся пробелы "( ){2;}" " "
убрать пробел после открывающей скобкой "( " "("
убрать пробел перед закрывающей скобки " )" ")"

Теперь необходимо все это оформить в компактном виде. Для этого удобно создать пару массивов и загнать все в цикл.

В итоге получим:

Sub Замена()

Dim arrText() As Variant
arrText = Array("([а-я]) @(.)", _
 "([а-я].@)([А-Я])", _
 "([а-я]) @(,)", _
 "([а-я],)([а-я])", _
 "(.) (^13)", _
 "( ){2;}", _
 "( ", _
 " )")

Dim arrReplaceText() As Variant
arrReplaceText = Array("12", _
 "1 2", _
 "12", _
 "1 2", _
 "12", _
 " ", _
 "(", _
 ")")

Selection.WholeStory

For i = 0 To UBound(arrText)

 Selection.Find.ClearFormatting
 Selection.Find.Replacement.ClearFormatting
 With Selection.Find
 .Text = arrText(i)
 .Replacement.Text = arrReplaceText(i)
 .Forward = True
 .Wrap = wdFindContinue
 .Format = False
 .MatchCase = False
 .MatchWholeWord = False
 .MatchWildcards = True
 .MatchSoundsLike = False
 .MatchAllWordForms = False
 End With
 Selection.Find.Execute Replace:=wdReplaceAll
Next

End Sub

Полученный макрос сохраняем вместе с документом. Вызвать макрос можно из меню Разработчик или с помощью назначенной комбинации горячих клавиш (Файл -> Параметры -> Настройка ленты -> Сочетания клавиш: Настройка…)

Автор: Stanislaw


2016-05-16 • Просмотров [ 12571 ]

Понравилась статья? Поделить с друзьями:
  • Замена текста в файлах excel
  • Замена текста в таблице excel
  • Замена текста в нескольких файлах word одновременно
  • Замена текста в колонтитулах word макрос
  • Замена текста в колонтитулах word vba