Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос на Поиск опред.текста и замену на опред.текст - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: _Boroda_, китин  
Макрос на Поиск опред.текста и замену на опред.текст
misharin Дата: Пятница, 07.04.2017, 07:21 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте!

Просьба помочь с макросом для Word на поиск определенных текстов и заменой их на определенный текст. Чтобы в одном макросе забить все неообходимые поиски и замены.
 
Ответить
СообщениеЗдравствуйте!

Просьба помочь с макросом для Word на поиск определенных текстов и заменой их на определенный текст. Чтобы в одном макросе забить все неообходимые поиски и замены.

Автор - misharin
Дата добавления - 07.04.2017 в 07:21
Pelena Дата: Пятница, 07.04.2017, 09:07 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
С помощью макрорекодера получилось так. Первый массив "что менять", второй массив "на что менять"
[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]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
С помощью макрорекодера получилось так. Первый массив "что менять", второй массив "на что менять"
[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]

Автор - Pelena
Дата добавления - 07.04.2017 в 09:07
misharin Дата: Пятница, 07.04.2017, 09:37 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо! все вроде работает!

А можно написать отдельными строками что на что менять:

fnd = Array("первый")
rpl = Array("четвертый")
fnd = Array("второй")
rpl = Array("пятый")
fnd = Array("третий")
rpl = Array("шестой")

т.е. поиск слова "первый"
замена на "четверты"
поиск слова "второй"
замена на "пятый"

Будет работать? а то много поисков и замен и одной строкой трудновато писать и контролировать.


Сообщение отредактировал misharin - Пятница, 07.04.2017, 10:42
 
Ответить
СообщениеСпасибо! все вроде работает!

А можно написать отдельными строками что на что менять:

fnd = Array("первый")
rpl = Array("четвертый")
fnd = Array("второй")
rpl = Array("пятый")
fnd = Array("третий")
rpl = Array("шестой")

т.е. поиск слова "первый"
замена на "четверты"
поиск слова "второй"
замена на "пятый"

Будет работать? а то много поисков и замен и одной строкой трудновато писать и контролировать.

Автор - misharin
Дата добавления - 07.04.2017 в 09:37
Pelena Дата: Пятница, 07.04.2017, 11:45 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Не, именно так, как Вы написали, не будет.
Можно записать слова в один массив, чередуя "что меняем" и "на что меняем"
[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]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеНе, именно так, как Вы написали, не будет.
Можно записать слова в один массив, чередуя "что меняем" и "на что меняем"
[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]

Автор - Pelena
Дата добавления - 07.04.2017 в 11:45
misharin Дата: Пятница, 07.04.2017, 11:58 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Все супер! Спасибо! Работает. Буду пробовать на конкретном документе.

Еще вопрос эти черточки в конце строк _ обязательны получаются? какова их функция если не секрет?
 
Ответить
СообщениеВсе супер! Спасибо! Работает. Буду пробовать на конкретном документе.

Еще вопрос эти черточки в конце строк _ обязательны получаются? какова их функция если не секрет?

Автор - misharin
Дата добавления - 07.04.2017 в 11:58
Pelena Дата: Пятница, 07.04.2017, 12:03 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Можно записать всё одной строкой, как в первом примере.
[vba]
Код
fnd = Array("первый", "четвертый", "второй", "пятый", "третий", "шестой")
[/vba]
Эти черточки ставятся, если хотим сделать перенос строки (для удобства восприятия)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеМожно записать всё одной строкой, как в первом примере.
[vba]
Код
fnd = Array("первый", "четвертый", "второй", "пятый", "третий", "шестой")
[/vba]
Эти черточки ставятся, если хотим сделать перенос строки (для удобства восприятия)

Автор - Pelena
Дата добавления - 07.04.2017 в 12:03
misharin Дата: Пятница, 07.04.2017, 12:05 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Все понятно. Благодарю!
 
Ответить
СообщениеВсе понятно. Благодарю!

Автор - misharin
Дата добавления - 07.04.2017 в 12:05
misharin Дата: Вторник, 31.10.2017, 16:14 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый день!
Работаю с макросом

[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 - Вторник, 31.10.2017, 16:23
 
Ответить
СообщениеДобрый день!
Работаю с макросом

[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
Дата добавления - 31.10.2017 в 16:14
misharin Дата: Среда, 01.11.2017, 11:57 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Если быть точнее: строки вставляются, но уже ту самую черточку (как объясняли, которая ставится для переноса строки (для удобства восприятия)) не дает ставить. выводит окошко с надписью "too many line continuations" жмем Ок и черточка пропадает. Пожалуйста, как быть?
 
Ответить
СообщениеЕсли быть точнее: строки вставляются, но уже ту самую черточку (как объясняли, которая ставится для переноса строки (для удобства восприятия)) не дает ставить. выводит окошко с надписью "too many line continuations" жмем Ок и черточка пропадает. Пожалуйста, как быть?

Автор - misharin
Дата добавления - 01.11.2017 в 11:57
Gustav Дата: Среда, 01.11.2017, 13:52 | Сообщение № 10
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
"too many line continuations"
Существует ограничение на кол-во строк продолжения оператора VBA, т.е. на кол-во этих самых "черточек". По памяти, вроде не более 25 строк может занимать такой оператор, соответственно, черточек будет не более 24.

Наберите это "too many line continuations" в Google и он Вам всё расскажет лучше меня.

Пожалуйста, как быть?

Ну, как быть... Больше в одной строке размещайте, в строке вроде до 1023 символов можно разместить.


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Среда, 01.11.2017, 14:00
 
Ответить
Сообщение
"too many line continuations"
Существует ограничение на кол-во строк продолжения оператора VBA, т.е. на кол-во этих самых "черточек". По памяти, вроде не более 25 строк может занимать такой оператор, соответственно, черточек будет не более 24.

Наберите это "too many line continuations" в Google и он Вам всё расскажет лучше меня.

Пожалуйста, как быть?

Ну, как быть... Больше в одной строке размещайте, в строке вроде до 1023 символов можно разместить.

Автор - Gustav
Дата добавления - 01.11.2017 в 13:52
Gustav Дата: Среда, 01.11.2017, 14:21 | Сообщение № 11
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Наконец, можно код по-другому оформить - не с переносами строк, а с конкатенацией текстовых переменных, после чего итоговую длинную строку с разделителем пропустить через функцию Split:
[vba]
Код
Sub test()
    Dim fnd
    Dim str As String
                
    str = str & "первый,второй,третий,четвертый,"
    str = str & "пятый,шестой,седьмой,восьмой"
        
    fnd = Split(str, ",") '= то же самое, что Array("первый","второй","третий","четвертый","пятый","шестой","седьмой","восьмой")
End Sub
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеНаконец, можно код по-другому оформить - не с переносами строк, а с конкатенацией текстовых переменных, после чего итоговую длинную строку с разделителем пропустить через функцию Split:
[vba]
Код
Sub test()
    Dim fnd
    Dim str As String
                
    str = str & "первый,второй,третий,четвертый,"
    str = str & "пятый,шестой,седьмой,восьмой"
        
    fnd = Split(str, ",") '= то же самое, что Array("первый","второй","третий","четвертый","пятый","шестой","седьмой","восьмой")
End Sub
[/vba]

Автор - Gustav
Дата добавления - 01.11.2017 в 14:21
Pelena Дата: Среда, 01.11.2017, 14:32 | Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Можно ещё слова в отдельном файле записать по принципу чередования: что заменить - на что заменить. Файл Список слов должен лежать в той же папке, что и файл с макросом
К сообщению приложен файл: Word.rar (67.6 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеМожно ещё слова в отдельном файле записать по принципу чередования: что заменить - на что заменить. Файл Список слов должен лежать в той же папке, что и файл с макросом

Автор - Pelena
Дата добавления - 01.11.2017 в 14:32
misharin Дата: Пятница, 03.11.2017, 10:53 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Pelena, А как сделать, чтобы текст можно было заменять на других документах (по горячей клавише например) при открытом документе с макросом? Ну чтобы не копировать макросы в каждый документ где требуется замена, а взял перекинул документ с макросом и списком в папку с файлами, открыл документ с макросом затем открыл документ где требуется заменять нажал горячие клавиши и готово.
 
Ответить
СообщениеPelena, А как сделать, чтобы текст можно было заменять на других документах (по горячей клавише например) при открытом документе с макросом? Ну чтобы не копировать макросы в каждый документ где требуется замена, а взял перекинул документ с макросом и списком в папку с файлами, открыл документ с макросом затем открыл документ где требуется заменять нажал горячие клавиши и готово.

Автор - misharin
Дата добавления - 03.11.2017 в 10:53
Pelena Дата: Пятница, 03.11.2017, 11:08 | Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Сохраните макрос в шаблон Normal.dotm, тогда он будет доступен в любых документах


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеСохраните макрос в шаблон Normal.dotm, тогда он будет доступен в любых документах

Автор - Pelena
Дата добавления - 03.11.2017 в 11:08
misharin Дата: Пятница, 03.11.2017, 11:13 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Т.е. через файл не получится? Чтобы даже на другой комп перекинул два файла и можно работать. Просто как то здесь на форуме помогли было с макросом для exel, который работает на любом компе, главное файл макросом открытый был.
 
Ответить
СообщениеТ.е. через файл не получится? Чтобы даже на другой комп перекинул два файла и можно работать. Просто как то здесь на форуме помогли было с макросом для exel, который работает на любом компе, главное файл макросом открытый был.

Автор - misharin
Дата добавления - 03.11.2017 в 11:13
Pelena Дата: Пятница, 03.11.2017, 11:19 | Сообщение № 16
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Почему не получится? Получится, только макрос надо дописать :)

Проверяйте
К сообщению приложен файл: 0470246.docm (62.2 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеПочему не получится? Получится, только макрос надо дописать :)

Проверяйте

Автор - Pelena
Дата добавления - 03.11.2017 в 11:19
misharin Дата: Пятница, 03.11.2017, 11:42 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Что то не получается на другом документе применить((( ни через горячие клавиши, через макросы вручную тоже не получается запустить, почему то не видит этот файл с макросами


Сообщение отредактировал misharin - Пятница, 03.11.2017, 12:04
 
Ответить
СообщениеЧто то не получается на другом документе применить((( ни через горячие клавиши, через макросы вручную тоже не получается запустить, почему то не видит этот файл с макросами

Автор - misharin
Дата добавления - 03.11.2017 в 11:42
Pelena Дата: Пятница, 03.11.2017, 12:16 | Сообщение № 18
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Открываете файл с макросом из предыдущего сообщения, запускаете макрос, в диалоговом окне выбираете файл для замены слов, проверяете результат


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеОткрываете файл с макросом из предыдущего сообщения, запускаете макрос, в диалоговом окне выбираете файл для замены слов, проверяете результат

Автор - Pelena
Дата добавления - 03.11.2017 в 12:16
misharin Дата: Пятница, 03.11.2017, 12:52 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Все работает)) Спасибо! Осталось только с пробелами чуть поработать. Немного своеобразно идет замена пробелов.
 
Ответить
СообщениеВсе работает)) Спасибо! Осталось только с пробелами чуть поработать. Немного своеобразно идет замена пробелов.

Автор - misharin
Дата добавления - 03.11.2017 в 12:52
Мурад Дата: Пятница, 09.02.2018, 10:24 | Сообщение № 20
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Добрый день!
Вопрос глупый, но все же) При вставке слов, склонения необходимо самому учитывать?)
Найти-Заменить: "первый", "четвертый", "первого", "четвертого", "первому", "четвертому", "первого", "четвертого", "первым", "четвертым", "первом", "четвертом"
Просто задача усложняется в 6 раз, если нет автоматического способа подбора склонений....
 
Ответить
СообщениеДобрый день!
Вопрос глупый, но все же) При вставке слов, склонения необходимо самому учитывать?)
Найти-Заменить: "первый", "четвертый", "первого", "четвертого", "первому", "четвертому", "первого", "четвертого", "первым", "четвертым", "первом", "четвертом"
Просто задача усложняется в 6 раз, если нет автоматического способа подбора склонений....

Автор - Мурад
Дата добавления - 09.02.2018 в 10:24
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!