Просьба помочь с макросом для Word на поиск определенных текстов и заменой их на определенный текст. Чтобы в одном макросе забить все неообходимые поиски и замены.
Здравствуйте!
Просьба помочь с макросом для Word на поиск определенных текстов и заменой их на определенный текст. Чтобы в одном макросе забить все неообходимые поиски и замены.misharin
Здравствуйте. С помощью макрорекодера получилось так. Первый массив "что менять", второй массив "на что менять" [vba]
Код
Sub Макрос1() Dim i&, fnd(), rpl() fnd = Array("первый", "второй", "третий") rpl = Array("четвертый", "пятый", "шестой")
Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting For i = 0 To UBound(fnd) With Selection.Find .Text = fnd(i) .Replacement.Text = rpl(i) .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False End With Selection.Find.Execute Replace:=wdReplaceAll Next i End Sub
[/vba]
Здравствуйте. С помощью макрорекодера получилось так. Первый массив "что менять", второй массив "на что менять" [vba]
Код
Sub Макрос1() Dim i&, fnd(), rpl() fnd = Array("первый", "второй", "третий") rpl = Array("четвертый", "пятый", "шестой")
Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting For i = 0 To UBound(fnd) With Selection.Find .Text = fnd(i) .Replacement.Text = rpl(i) .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False End With Selection.Find.Execute Replace:=wdReplaceAll Next i End Sub
Не, именно так, как Вы написали, не будет. Можно записать слова в один массив, чередуя "что меняем" и "на что меняем" [vba]
Код
Sub Макрос1() Dim i&, fnd() fnd = Array("первый", "четвертый", _ "второй", "пятый", _ "третий", "шестой")
Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting For i = 0 To UBound(fnd) Step 2 With Selection.Find .Text = fnd(i) .Replacement.Text = fnd(i + 1) .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False End With Selection.Find.Execute Replace:=wdReplaceAll Next i End Sub
[/vba]
Не, именно так, как Вы написали, не будет. Можно записать слова в один массив, чередуя "что меняем" и "на что меняем" [vba]
Код
Sub Макрос1() Dim i&, fnd() fnd = Array("первый", "четвертый", _ "второй", "пятый", _ "третий", "шестой")
Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting For i = 0 To UBound(fnd) Step 2 With Selection.Find .Text = fnd(i) .Replacement.Text = fnd(i + 1) .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False End With Selection.Find.Execute Replace:=wdReplaceAll Next i End Sub
Sub Макрос1() Dim i&, fnd() fnd = Array("первый", "четвертый", _ "второй", "пятый", _ "третий", "шестой")
Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting For i = 0 To UBound(fnd) Step 2 With Selection.Find .Text = fnd(i) .Replacement.Text = fnd(i + 1) .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False End With Selection.Find.Execute Replace:=wdReplaceAll Next i End Sub
[/vba]
И вот после набора определенного количества строк начало выдавать "too many line continuations". Что это значит? Количество строк получается ограничено что-ли?
Добрый день! Работаю с макросом
[vba]
Код
Sub Макрос1() Dim i&, fnd() fnd = Array("первый", "четвертый", _ "второй", "пятый", _ "третий", "шестой")
Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting For i = 0 To UBound(fnd) Step 2 With Selection.Find .Text = fnd(i) .Replacement.Text = fnd(i + 1) .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False End With Selection.Find.Execute Replace:=wdReplaceAll Next i End Sub
[/vba]
И вот после набора определенного количества строк начало выдавать "too many line continuations". Что это значит? Количество строк получается ограничено что-ли?misharin
Сообщение отредактировал misharin - Вторник, 31.10.2017, 16:23
Если быть точнее: строки вставляются, но уже ту самую черточку (как объясняли, которая ставится для переноса строки (для удобства восприятия)) не дает ставить. выводит окошко с надписью "too many line continuations" жмем Ок и черточка пропадает. Пожалуйста, как быть?
Если быть точнее: строки вставляются, но уже ту самую черточку (как объясняли, которая ставится для переноса строки (для удобства восприятия)) не дает ставить. выводит окошко с надписью "too many line continuations" жмем Ок и черточка пропадает. Пожалуйста, как быть?misharin
Существует ограничение на кол-во строк продолжения оператора VBA, т.е. на кол-во этих самых "черточек". По памяти, вроде не более 25 строк может занимать такой оператор, соответственно, черточек будет не более 24.
Наберите это "too many line continuations" в Google и он Вам всё расскажет лучше меня.
Существует ограничение на кол-во строк продолжения оператора VBA, т.е. на кол-во этих самых "черточек". По памяти, вроде не более 25 строк может занимать такой оператор, соответственно, черточек будет не более 24.
Наберите это "too many line continuations" в Google и он Вам всё расскажет лучше меня.
Наконец, можно код по-другому оформить - не с переносами строк, а с конкатенацией текстовых переменных, после чего итоговую длинную строку с разделителем пропустить через функцию Split: [vba]
fnd = Split(str, ",") '= то же самое, что Array("первый","второй","третий","четвертый","пятый","шестой","седьмой","восьмой") End Sub
[/vba]
Наконец, можно код по-другому оформить - не с переносами строк, а с конкатенацией текстовых переменных, после чего итоговую длинную строку с разделителем пропустить через функцию Split: [vba]
Можно ещё слова в отдельном файле записать по принципу чередования: что заменить - на что заменить. Файл Список слов должен лежать в той же папке, что и файл с макросом
Можно ещё слова в отдельном файле записать по принципу чередования: что заменить - на что заменить. Файл Список слов должен лежать в той же папке, что и файл с макросомPelena
Pelena, А как сделать, чтобы текст можно было заменять на других документах (по горячей клавише например) при открытом документе с макросом? Ну чтобы не копировать макросы в каждый документ где требуется замена, а взял перекинул документ с макросом и списком в папку с файлами, открыл документ с макросом затем открыл документ где требуется заменять нажал горячие клавиши и готово.
Pelena, А как сделать, чтобы текст можно было заменять на других документах (по горячей клавише например) при открытом документе с макросом? Ну чтобы не копировать макросы в каждый документ где требуется замена, а взял перекинул документ с макросом и списком в папку с файлами, открыл документ с макросом затем открыл документ где требуется заменять нажал горячие клавиши и готово.misharin
Т.е. через файл не получится? Чтобы даже на другой комп перекинул два файла и можно работать. Просто как то здесь на форуме помогли было с макросом для exel, который работает на любом компе, главное файл макросом открытый был.
Т.е. через файл не получится? Чтобы даже на другой комп перекинул два файла и можно работать. Просто как то здесь на форуме помогли было с макросом для exel, который работает на любом компе, главное файл макросом открытый был.misharin
Что то не получается на другом документе применить((( ни через горячие клавиши, через макросы вручную тоже не получается запустить, почему то не видит этот файл с макросами
Что то не получается на другом документе применить((( ни через горячие клавиши, через макросы вручную тоже не получается запустить, почему то не видит этот файл с макросамиmisharin
Сообщение отредактировал misharin - Пятница, 03.11.2017, 12:04
Добрый день! Вопрос глупый, но все же) При вставке слов, склонения необходимо самому учитывать?) Найти-Заменить: "первый", "четвертый", "первого", "четвертого", "первому", "четвертому", "первого", "четвертого", "первым", "четвертым", "первом", "четвертом" Просто задача усложняется в 6 раз, если нет автоматического способа подбора склонений....
Добрый день! Вопрос глупый, но все же) При вставке слов, склонения необходимо самому учитывать?) Найти-Заменить: "первый", "четвертый", "первого", "четвертого", "первому", "четвертому", "первого", "четвертого", "первым", "четвертым", "первом", "четвертом" Просто задача усложняется в 6 раз, если нет автоматического способа подбора склонений....Мурад