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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск заданной фразы в документах Word - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск заданной фразы в документах Word (Макросы/Sub)
Поиск заданной фразы в документах Word
Sashagor1982 Дата: Суббота, 03.06.2017, 23:32 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте, подскажите, можно ли программным путем решить следующую задачу. В приложенном файле архив, в котором находится файл-пример и папка "2017 год" содержащая документы Word. Вопрос состоит с следующем, в столбце A файла примера определенные фразы и т.д., необходимо, что бы в той же строке в столбцах B, C и т.д. в результате выполнения программы значения равнялись именам файлов который содержит данную фразу (при этом таких файлов может быть много).
К сообщению приложен файл: 6226717.rar (21.9 Kb)
 
Ответить
СообщениеЗдравствуйте, подскажите, можно ли программным путем решить следующую задачу. В приложенном файле архив, в котором находится файл-пример и папка "2017 год" содержащая документы Word. Вопрос состоит с следующем, в столбце A файла примера определенные фразы и т.д., необходимо, что бы в той же строке в столбцах B, C и т.д. в результате выполнения программы значения равнялись именам файлов который содержит данную фразу (при этом таких файлов может быть много).

Автор - Sashagor1982
Дата добавления - 03.06.2017 в 23:32
Michael_S Дата: Воскресенье, 04.06.2017, 02:43 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
можно ли программным путем решить следующую задачу

Можно.
 
Ответить
Сообщение
можно ли программным путем решить следующую задачу

Можно.

Автор - Michael_S
Дата добавления - 04.06.2017 в 02:43
Sashagor1982 Дата: Воскресенье, 04.06.2017, 09:35 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Каким образом?
 
Ответить
СообщениеКаким образом?

Автор - Sashagor1982
Дата добавления - 04.06.2017 в 09:35
Michael_S Дата: Воскресенье, 04.06.2017, 10:10 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Из Excel открывать поочердно файлы Word, в каждом поиском проверять наличие нужных данных; нашли-отметили.
 
Ответить
СообщениеИз Excel открывать поочердно файлы Word, в каждом поиском проверять наличие нужных данных; нашли-отметили.

Автор - Michael_S
Дата добавления - 04.06.2017 в 10:10
Sashagor1982 Дата: Воскресенье, 04.06.2017, 11:35 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Другие варианты.
 
Ответить
СообщениеДругие варианты.

Автор - Sashagor1982
Дата добавления - 04.06.2017 в 11:35
Michael_S Дата: Воскресенье, 04.06.2017, 11:51 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Другой вариант - открывать файлы Word вручную, также вручную поиском искать нужное и отмечать, если найдено.

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


Сообщение отредактировал Michael_S - Воскресенье, 04.06.2017, 11:53
 
Ответить
СообщениеДругой вариант - открывать файлы Word вручную, также вручную поиском искать нужное и отмечать, если найдено.

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

Автор - Michael_S
Дата добавления - 04.06.2017 в 11:51
Pelena Дата: Воскресенье, 04.06.2017, 12:24 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Michael_S, при всём моём уважении, зачем было заводить этот разговор, если помогать не собирались?


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

Автор - Pelena
Дата добавления - 04.06.2017 в 12:24
VSerg Дата: Воскресенье, 04.06.2017, 14:08 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 2 ±
Замечаний: 0% ±

Excel 2013
Попробовал ради саморазвития. Уверен что можно упростить и оптимизировать, но так скажем, для начала, можно попробовать так:

И еще, я немного переформатировал ваш пример, добавив пробел, как разделитель между словами, иначе не знаю как использовать функцию Split. Возможно, нужно искать символ новой строки.
К сообщению приложен файл: 6226717.zip (37.9 Kb)


Сообщение отредактировал VSerg - Воскресенье, 04.06.2017, 14:28
 
Ответить
СообщениеПопробовал ради саморазвития. Уверен что можно упростить и оптимизировать, но так скажем, для начала, можно попробовать так:

И еще, я немного переформатировал ваш пример, добавив пробел, как разделитель между словами, иначе не знаю как использовать функцию Split. Возможно, нужно искать символ новой строки.

Автор - VSerg
Дата добавления - 04.06.2017 в 14:08
Sashagor1982 Дата: Воскресенье, 04.06.2017, 15:00 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
VSerg, выдает ошибку на строке:
[vba]
Код
Dim objWord As Word.Application
[/vba]
 
Ответить
СообщениеVSerg, выдает ошибку на строке:
[vba]
Код
Dim objWord As Word.Application
[/vba]

Автор - Sashagor1982
Дата добавления - 04.06.2017 в 15:00
Sashagor1982 Дата: Воскресенье, 04.06.2017, 15:08 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Я так же переработал пример, в документе Word эти слова будут разделены запятой.
К сообщению приложен файл: 4420224.rar (23.3 Kb)
 
Ответить
СообщениеЯ так же переработал пример, в документе Word эти слова будут разделены запятой.

Автор - Sashagor1982
Дата добавления - 04.06.2017 в 15:08
VSerg Дата: Воскресенье, 04.06.2017, 15:14 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 2 ±
Замечаний: 0% ±

Excel 2013
выдает ошибку на строке

Лучше конечно указывать какую ошибку. Но рискну предположить, что нет ссылки на Microsoft Word Object Library. Нужно зайти в меню Инструменты => ссылки и установить галочку.
Если разделитель запятая, то попробуйте изменить строку[vba]
Код
s = Split(.Range.Text, ",")
[/vba]
 
Ответить
Сообщение
выдает ошибку на строке

Лучше конечно указывать какую ошибку. Но рискну предположить, что нет ссылки на Microsoft Word Object Library. Нужно зайти в меню Инструменты => ссылки и установить галочку.
Если разделитель запятая, то попробуйте изменить строку[vba]
Код
s = Split(.Range.Text, ",")
[/vba]

Автор - VSerg
Дата добавления - 04.06.2017 в 15:14
buchlotnik Дата: Воскресенье, 04.06.2017, 16:00 | Сообщение № 12
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
VSerg, я думаю, что проблема состоит в том, что у вас 2013, а у ТС - 2007. У Экселя есть проблема обратной совместимости и ваш файл пытается найти у Sashagor1982 библиотеку 2013 Word, которой просто нет. Поскольку вы всё равно используете позднее связывание в области имён достаточно переписать [vba]
Код
Dim objWord As Object
Dim wrdDoc As Object
[/vba] и тогда ссылка на библиотеку вовсе не нужна


Сообщение отредактировал buchlotnik - Воскресенье, 04.06.2017, 18:08
 
Ответить
СообщениеVSerg, я думаю, что проблема состоит в том, что у вас 2013, а у ТС - 2007. У Экселя есть проблема обратной совместимости и ваш файл пытается найти у Sashagor1982 библиотеку 2013 Word, которой просто нет. Поскольку вы всё равно используете позднее связывание в области имён достаточно переписать [vba]
Код
Dim objWord As Object
Dim wrdDoc As Object
[/vba] и тогда ссылка на библиотеку вовсе не нужна

Автор - buchlotnik
Дата добавления - 04.06.2017 в 16:00
Sashagor1982 Дата: Воскресенье, 04.06.2017, 19:52 | Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
VSerg, buchlotnik, Спасибо, чуть доработал код, программа в принципе рабочая. Однако, есть ли другие варианты решения задачи? В этом варианте программа разбивает файлы на слова и каждое проверяет что при большом количестве файлов и данных в файлах очень долго, а достаточно просто знать содержит ли Word-файл данное значение или нет.
К сообщению приложен файл: 0674271.rar (26.3 Kb)
 
Ответить
СообщениеVSerg, buchlotnik, Спасибо, чуть доработал код, программа в принципе рабочая. Однако, есть ли другие варианты решения задачи? В этом варианте программа разбивает файлы на слова и каждое проверяет что при большом количестве файлов и данных в файлах очень долго, а достаточно просто знать содержит ли Word-файл данное значение или нет.

Автор - Sashagor1982
Дата добавления - 04.06.2017 в 19:52
RAN Дата: Воскресенье, 04.06.2017, 20:12 | Сообщение № 14
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Писать с нуля и тестировать было лениво.
[vba]
Код
Sub SearchInMSWord()
    Dim FSO As Object
    Dim SourceFolder As Object
    Dim FileItem As Object
    Dim objWord As Object
    Dim wrdDoc As Object
    Dim i As Long
    Dim lLastRow As Long
    Dim myRange As Object

    lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SourceFolder = FSO.getfolder(ThisWorkbook.Path & "/2017 год")
    Set objWord = CreateObject("Word.Application")

    For Each FileItem In SourceFolder.Files
        Set wrdDoc = objWord.Documents.Open(FileItem.Path, , True)
        For i = 1 To lLastRow
            Set myRange = wrdDoc.Content
            myRange.Find.Execute Cells(i, 1).Value, , , , , , True
            If myRange.Find.Found Then Cells(i, Columns.Count).End(xlToLeft).Next = wrdDoc.Name
            Set myRange = Nothing
        Next
        wrdDoc.Close
    Next
    objWord.Quit
    Set wrdDoc = Nothing: Set objWord = Nothing: Set SourceFolder = Nothing: Set FSO = Nothing
End Sub
[/vba]
Протестировал, поправил


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Воскресенье, 04.06.2017, 20:52
 
Ответить
СообщениеПисать с нуля и тестировать было лениво.
[vba]
Код
Sub SearchInMSWord()
    Dim FSO As Object
    Dim SourceFolder As Object
    Dim FileItem As Object
    Dim objWord As Object
    Dim wrdDoc As Object
    Dim i As Long
    Dim lLastRow As Long
    Dim myRange As Object

    lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SourceFolder = FSO.getfolder(ThisWorkbook.Path & "/2017 год")
    Set objWord = CreateObject("Word.Application")

    For Each FileItem In SourceFolder.Files
        Set wrdDoc = objWord.Documents.Open(FileItem.Path, , True)
        For i = 1 To lLastRow
            Set myRange = wrdDoc.Content
            myRange.Find.Execute Cells(i, 1).Value, , , , , , True
            If myRange.Find.Found Then Cells(i, Columns.Count).End(xlToLeft).Next = wrdDoc.Name
            Set myRange = Nothing
        Next
        wrdDoc.Close
    Next
    objWord.Quit
    Set wrdDoc = Nothing: Set objWord = Nothing: Set SourceFolder = Nothing: Set FSO = Nothing
End Sub
[/vba]
Протестировал, поправил

Автор - RAN
Дата добавления - 04.06.2017 в 20:12
Sashagor1982 Дата: Понедельник, 05.06.2017, 13:23 | Сообщение № 15
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
[vba]
Код
Set wrdDoc = objWord.Documents.Open(FileItem.Path, , True)
[/vba]
На данной строке выдает ошибку Файл поврежден.


Сообщение отредактировал Sashagor1982 - Вторник, 06.06.2017, 10:43
 
Ответить
Сообщение[vba]
Код
Set wrdDoc = objWord.Documents.Open(FileItem.Path, , True)
[/vba]
На данной строке выдает ошибку Файл поврежден.

Автор - Sashagor1982
Дата добавления - 05.06.2017 в 13:23
Sashagor1982 Дата: Вторник, 06.06.2017, 10:44 | Сообщение № 16
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Программа видит скрытые файлы в этом и была проблема. Спасибо, задача решена.
 
Ответить
СообщениеПрограмма видит скрытые файлы в этом и была проблема. Спасибо, задача решена.

Автор - Sashagor1982
Дата добавления - 06.06.2017 в 10:44
Leprotto Дата: Пятница, 23.06.2017, 12:04 | Сообщение № 17
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 145
Репутация: 2 ±
Замечаний: 0% ±

Excel 2016
Всем привет!
А можно сделать то же самое, только чтобы поиск значения осуществлялся в конкретном месте файла ворд?
Например в таблице или пометить нужное место стилем "Заголовок/подзаголовок" ;)
Вышеизложенное решение уж больно долго работает в больших документах :(
 
Ответить
СообщениеВсем привет!
А можно сделать то же самое, только чтобы поиск значения осуществлялся в конкретном месте файла ворд?
Например в таблице или пометить нужное место стилем "Заголовок/подзаголовок" ;)
Вышеизложенное решение уж больно долго работает в больших документах :(

Автор - Leprotto
Дата добавления - 23.06.2017 в 12:04
AndreTM Дата: Пятница, 23.06.2017, 12:23 | Сообщение № 18
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Можно.
И чтобы не менять оформление документов - пометьте нужные куски закладками, а затем вместо всего wrdDoc.Content ищите по коллекции wrdDoc.Bookmarks (Bookmarks(i).Range.Text -содержимое закладки).


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеМожно.
И чтобы не менять оформление документов - пометьте нужные куски закладками, а затем вместо всего wrdDoc.Content ищите по коллекции wrdDoc.Bookmarks (Bookmarks(i).Range.Text -содержимое закладки).

Автор - AndreTM
Дата добавления - 23.06.2017 в 12:23
Leprotto Дата: Понедельник, 26.06.2017, 12:50 | Сообщение № 19
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 145
Репутация: 2 ±
Замечаний: 0% ±

Excel 2016
AndreTM, СУПЕР, СПАСИБО!
Правда сначала помечал закладкой кусок текста и выяснилось, что при корректировке этого текста объем закладки меняется.
Поместил нужное в таблицу и пометил закладкой всю ячейку. Работает отлично :D
 
Ответить
СообщениеAndreTM, СУПЕР, СПАСИБО!
Правда сначала помечал закладкой кусок текста и выяснилось, что при корректировке этого текста объем закладки меняется.
Поместил нужное в таблицу и пометил закладкой всю ячейку. Работает отлично :D

Автор - Leprotto
Дата добавления - 26.06.2017 в 12:50
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск заданной фразы в документах Word (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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