1

Тема: Макрос на удаление определенных символов.

Требуется создать макрос, при запуске которого, он удалял символы, которые прописаны у него в конфиге. Т.е. есть текст, а мне во всем тексте нужно удалить символы, например - г., ул., р-н
Как подобное сделать?

2

Re: Макрос на удаление определенных символов.

1. Способ воспользоваться объектом InputBox, для определения списка удаляемых слов.

Public Sub DeleteListWord()
Dim inp As String, list As Variant
    inp = InputBox("Введите слова для удаления" & Chr(13) _
        & "через разделитель $. Например: " _
        & "г.$ул.$р-н") 'Запрашиваем список удаляемых слов
    list = Split(inp, "$") 'Создаем список слов
        For i = LBound(list) To UBound(list) 'Циклом заменяем слова списка
            Selection.Find.ClearFormatting
            Selection.Find.Replacement.ClearFormatting
                With Selection.Find
                    .Text = list(i)
                    .Replacement.Text = ""
                End With
                Selection.Find.Execute Replace:=wdReplaceAll
        Next i
End Sub

3

Re: Макрос на удаление определенных символов.

aap77 пишет:

1. Способ воспользоваться объектом InputBox, для определения списка удаляемых слов.

Public Sub DeleteListWord()
Dim inp As String, list As Variant
    inp = InputBox("Введите слова для удаления" & Chr(13) _
        & "через разделитель $. Например: " _
        & "г.$ул.$р-н") 'Запрашиваем список удаляемых слов
    list = Split(inp, "$") 'Создаем список слов
        For i = LBound(list) To UBound(list) 'Циклом заменяем слова списка
            Selection.Find.ClearFormatting
            Selection.Find.Replacement.ClearFormatting
                With Selection.Find
                    .Text = list(i)
                    .Replacement.Text = ""
                End With
                Selection.Find.Execute Replace:=wdReplaceAll
        Next i
End Sub

Ну не совсем так - мне нужно, чтобы в самом макросе уже были заданы эти слова. Т.е. я хочу повесить его на горячую клавишу и как только я нажимаю на нее, макрос без лишних вопросов удаляет подобные сокращения (которые я уже ввел в настройки макроса заранее). Кстати, хотелось бы еще добавить функцию, чтобы он больше одного пробела подряд удалял.

4

Re: Макрос на удаление определенных символов.

Тогда вместо

inp = InputBox("Введите слова для удаления" & Chr(13) _
        & "через разделитель $. Например: " _
        & "г.$ул.$р-н") 'Запрашиваем список удаляемых слов

Надо вставить

list=array("г.","ул.", "р-н") 'Создает массив зарезервированных слов

5

Re: Макрос на удаление определенных символов.

aap77 пишет:

Тогда вместо

inp = InputBox("Введите слова для удаления" & Chr(13) _
        & "через разделитель $. Например: " _
        & "г.$ул.$р-н") 'Запрашиваем список удаляемых слов

Надо вставить

list=array("г.","ул.", "р-н") 'Создает массив зарезервированных слов

А как быть с
>Кстати, хотелось бы еще добавить функцию, чтобы он больше одного пробела подряд удалял.

6

Re: Макрос на удаление определенных символов.

DYm00n пишет:
aap77 пишет:

Тогда вместо

inp = InputBox("Введите слова для удаления" & Chr(13) _
        & "через разделитель $. Например: " _
        & "г.$ул.$р-н") 'Запрашиваем список удаляемых слов

Надо вставить

list=array("г.","ул.", "р-н") 'Создает массив зарезервированных слов

А как быть с
>Кстати, хотелось бы еще добавить функцию, чтобы он больше одного пробела подряд удалял.

Если я правильно понял, то текст макроса должен быть такой -
Public Sub DeleteListWord()
Dim inp As String, list As Variant
list=array("г.","ул.", "р-н") 'Создает массив зарезервированных слов
    list = Split(inp, "$") 'Создаем список слов
        For i = LBound(list) To UBound(list) 'Циклом заменяем слова списка
            Selection.Find.ClearFormatting
            Selection.Find.Replacement.ClearFormatting
                With Selection.Find
                    .Text = list(i)
                    .Replacement.Text = ""
                End With
                Selection.Find.Execute Replace:=wdReplaceAll
        Next i
End Sub

Меня вот только смушают выделенные фрагменты. Все правильно? У меня данный макрос не работает и ошибок даже не выдает