1

Тема: Выделение группы слов

Ребята привет! У меня есть группа отдельных слов, которые надо выделить в большом тексте в WORD. Можно как-то это автоматизировать? Т.е. например скопировать эти слова столбиком в блокнот (файл txt) и потом загрузить их в Word, и чтобы в тексте эти слова выделились другим цветом или стали жирными?

2

Re: Выделение группы слов

Погуглила и смогла набросать такой макрос. Вот что у меня получилось. В документе находит "слово1" и выделяет его жирным красным, но  это происходит только с одним "слово1", если еще еще такое в тексте оно остается без изменений.
Также не могу понять, как задать группу слов (если написать через массив Array, выскакивает Debug, а если через * в виде "слово1*слово2*слово3", то ничего не происходит). У меня слов много более 100 штук, поэтому лучше их задавать из отдельного файла, как например здесь берут слова для замены из файла: http://wordexpert.ru/forum/viewtopic.php?id=770

Sub MacrosTextSelection()
    Dim k As Range
    Set k = ThisDocument.Range
    k.Find.Text = "слово1"
    If k.Find.Execute Then k.Font.Bold = True
    k.Font.Color = vbRed
End Sub

3

Re: Выделение группы слов

Добрый день, Алена!

К сожалению, у меня Ваш макрос не работает.
Предлагаю следующий вариант:

Sub FindAndBold()
    Dim Word1 As String
    Word1 = "Слово1"
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Bold = True
    With Selection.Find
        .Text = Word1
        .Replacement.Text = Word1
        .Forward = True
        .Wrap = wdFindAsk
        .Format = True
        .MatchCase = False
        .MatchWholeWord = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

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

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

4

Re: Выделение группы слов

Вот как производится построчное считывание данных из текстового файла text1.txt, находящегося в той же папке, что и файл Word:

Sub ReadTextFileByLines()
'Считывание информации из текстового файла построчно
Dim F As Long
Dim Name1, MyText As String
    'Вводим имя текстового файла
    'Файл называется text1.txt и находится в той же папке, что и файл Word
    Name1 = "text1.txt"
    'F - идентификатор для работы с файлом
    '(в данном случае устанавливается равным 1)
    F = FreeFile
    'Файл открывается для чтения (For Input)
    Open Name1 For Input As #F
    Do Until EOF(F)
        'Информация считывается в переменную MyText
        Line Input #F, MyText
        'Здесь преобразование считываемых данных
        MsgBox MyText
    
    Loop
    Close #F
End Sub
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

5

Re: Выделение группы слов

Итоговый макрос получился таким:

Sub FindAndBoldFromFile()
'Считывание информации из текстового файла построчно
Dim F As Long
Dim Name1, MyText As String

    'Вводим имя текстового файла
    'Файл называется text1.txt и находится в той же папке, что и файл Word
    Name1 = "text1.txt"
    'F - идентификатор для работы с файлом
    '(в данном случае устанавливается равным 1)
    F = FreeFile
    'Файл открывается для чтения (For Input)
    Open Name1 For Input As #F
    Do Until EOF(F)
        'Информация считывается в переменную MyText
        Line Input #F, MyText

        'Далее считанные данные используются для преобразования файла Word
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        Selection.Find.Replacement.Font.Bold = True
        With Selection.Find
            .Text = MyText
            .Replacement.Text = MyText
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = True
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    Loop
    Close #F
End Sub

Тестовый файлы прилагаю.

Post's attachments

Test.zip 14.42 Кб, 16 скачиваний с 2015-01-26 

You don't have the permssions to download the attachments of this post.
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

6

Re: Выделение группы слов

Добрый день, Александр!
Проверила работу макроса. Вы - гений!!! smile
Все работает отлично. Это то, что нужно мне нужно.
Ооочень Вам благодарна!

Вижу, что вы профи в этом деле. Может подскажете мне литературу по VBA для Word и/или Excel для написания макросов. Хочу на досуге заняться изучением этого, т.к. в наши дни всю рутинную работу конечно же нужно автоматизировать.

7

Re: Выделение группы слов

Alyona1 пишет:

Добрый день, Александр!
Проверила работу макроса. Вы - гений!!! smile
Все работает отлично. Это то, что нужно мне нужно.
Ооочень Вам благодарна!

Вижу, что вы профи в этом деле. Может подскажете мне литературу по VBA для Word и/или Excel для написания макросов. Хочу на досуге заняться изучением этого, т.к. в наши дни всю рутинную работу конечно же нужно автоматизировать.

Отлично!

Книги посмотрите, пожалуйста, здесь:
http://wordexpert.ru/forum/viewtopic.php?id=257

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

8

Re: Выделение группы слов

Alex_Gur пишет:
Alyona1 пишет:

Добрый день, Александр!
Проверила работу макроса. Вы - гений!!! smile
Все работает отлично. Это то, что нужно мне нужно.
Ооочень Вам благодарна!

Вижу, что вы профи в этом деле. Может подскажете мне литературу по VBA для Word и/или Excel для написания макросов. Хочу на досуге заняться изучением этого, т.к. в наши дни всю рутинную работу конечно же нужно автоматизировать.

Отлично!

Книги посмотрите, пожалуйста, здесь:
http://wordexpert.ru/forum/viewtopic.php?id=257



Супер. Спасибо!

9

Re: Выделение группы слов

Alyona1 пишет:

Может подскажете мне литературу по VBA для Word и/или Excel для написания макросов. Хочу на досуге заняться изучением этого, т.к. в наши дни всю рутинную работу конечно же нужно автоматизировать.

Из книг - лучше всего:

Клименко Б., Розенберг М. Microsoft Word. Комфортная работа с помощью макросов
СПб.: БХВ-Петербург, 2006. - 474 с.

Самоучитель предназначен для всех, кто использует Microsoft Word в работе и желает существенно повысить эффективность своего труда с помощью макросов. Рассказывается об автоматическом режиме записи макросов, описываются разнообразные приемы настройки рабочей среды, облегчающие выполнение стандартных повседневных задач. Объясняется, как понимать тексты программ, созданных при записи макросов в автоматическом режиме, и вносить в эти программы небольшие изменения, значительно повышающие эффективность их применения. Излагаются основы программирования на языке VВА, что позволит читателям самостоятельно создавать простые и эффективные макросы.
Обучение построено на простых и наглядных примерах, которые сразу же можно применить на практике.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

10

Re: Выделение группы слов

Alex_Gur пишет:
Alyona1 пишет:

Может подскажете мне литературу по VBA для Word и/или Excel для написания макросов. Хочу на досуге заняться изучением этого, т.к. в наши дни всю рутинную работу конечно же нужно автоматизировать.

Из книг - лучше всего:

Клименко Б., Розенберг М. Microsoft Word. Комфортная работа с помощью макросов
СПб.: БХВ-Петербург, 2006. - 474 с.

Самоучитель предназначен для всех, кто использует Microsoft Word в работе и желает существенно повысить эффективность своего труда с помощью макросов. Рассказывается об автоматическом режиме записи макросов, описываются разнообразные приемы настройки рабочей среды, облегчающие выполнение стандартных повседневных задач. Объясняется, как понимать тексты программ, созданных при записи макросов в автоматическом режиме, и вносить в эти программы небольшие изменения, значительно повышающие эффективность их применения. Излагаются основы программирования на языке VВА, что позволит читателям самостоятельно создавать простые и эффективные макросы.
Обучение построено на простых и наглядных примерах, которые сразу же можно применить на практике.

Спасибо. А скажите пжл, я так понимаю, что язык VBA не изменяется и не зависит от версии Word? Отличие только в том, что в старых версиях не было каких-то новых (или обновленных) возможностей Word? Ведь книга 2006, значит в ней обучение идет на примере Word 2003 или 2007.

11

Re: Выделение группы слов

Alyona1 пишет:

Спасибо. А скажите пжл, я так понимаю, что язык VBA не изменяется и не зависит от версии Word? Отличие только в том, что в старых версиях не было каких-то новых (или обновленных) возможностей Word? Ведь книга 2006, значит в ней обучение идет на примере Word 2003 или 2007.

Язык VBA претерпевает некоторые изменения от версии к версии, но для нашего уровня использования это не существенно.
Условно говоря, для начала изучения вполне приемлемы пособия, начиная от Word 97 (если я не ошибаюсь).
Книга Б. Клименко Б. и М. Розенберга написана по версии 2003. Можно считать, что там почти все актуально.
Мало вероятно, но можно допустить, что какие-то учебные макросы не пойдут на более поздних версиях. Тогда нужно разбираться. Если Вам встретится подобное - пишите в этой ветке.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

12

Re: Выделение группы слов

Alex_Gur пишет:
Alyona1 пишет:

Спасибо. А скажите пжл, я так понимаю, что язык VBA не изменяется и не зависит от версии Word? Отличие только в том, что в старых версиях не было каких-то новых (или обновленных) возможностей Word? Ведь книга 2006, значит в ней обучение идет на примере Word 2003 или 2007.

Язык VBA претерпевает некоторые изменения от версии к версии, но для нашего уровня использования это не существенно.
Условно говоря, для начала изучения вполне приемлемы пособия, начиная от Word 97 (если я не ошибаюсь).
Книга Б. Клименко Б. и М. Розенберга написана по версии 2003. Можно считать, что там почти все актуально.
Мало вероятно, но можно допустить, что какие-то учебные макросы не пойдут на более поздних версиях. Тогда нужно разбираться. Если Вам встретится подобное - пишите в этой ветке.


Поняла. Спасибо, Вам огромное.

13

Re: Выделение группы слов

То же самое - с подпрограммой:

Sub FindAndBoldFromFile_Sub()
'Считывание информации из текстового файла построчно
Dim F As Long
Dim Name1, MyText As String

    'Вводим имя текстового файла
    'Файл называется text1.txt и находится в той же папке, что и файл Word
    Name1 = "text1.txt"
    'F - идентификатор для работы с файлом
    '(в данном случае устанавливается равным 1)
    F = FreeFile
    'Файл открывается для чтения (For Input)
    Open Name1 For Input As #F
    Do Until EOF(F)
        'Информация считывается в переменную MyText
        Line Input #F, MyText
        'Далее производится преобразование считываемых данных
        Call FindAndBold_Sub(MyText)
    
    Loop
    Close #F
End Sub
Sub FindAndBold_Sub(Word1 As String)
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Bold = True
    With Selection.Find
        .Text = Word1
        .Replacement.Text = Word1
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

14

Re: Выделение группы слов

К сожалению, макрос работает со странным сбоем. Предполагаю, что дело не в нем. Первый день работал безукоризненно. Но после перезагрузки и запуска Ворда макрос работает только один, первый раз. для повторного запуска нужна перезагрузка Ворда, не только документа. То есть закрыть ворд и снова открыть документ.
Сбой (выделено цветом в debugger) происходит на этой строке:
    Open Name1 For Input As #F
Что делать?

15

Re: Выделение группы слов

lsvkiev пишет:

К сожалению, макрос работает со странным сбоем. Предполагаю, что дело не в нем. Первый день работал безукоризненно. Но после перезагрузки и запуска Ворда макрос работает только один, первый раз. для повторного запуска нужна перезагрузка Ворда, не только документа. То есть закрыть ворд и снова открыть документ.
Сбой (выделено цветом в debugger) происходит на этой строке:
    Open Name1 For Input As #F
Что делать?

Еще раз проверил приложенный ранее тестовый пример (повторяю его в приложении к этому сообщению).
Макрос успешно запускается несколько раз без перезапуска Word.
Скорее всего, у Вас макрос не находит текстовый файл для загрузки.
Приложите, пожалуйста, файлы, в которых воспроизводится ошибка.

Post's attachments

Test(1).zip 14.42 Кб, 13 скачиваний с 2015-09-24 

You don't have the permssions to download the attachments of this post.
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.