Страницы: 1
RSS
Поиск слов в DOC-файлах и сравнение их со списком
 
Всем доброго времени суток! возникла необходимость поиска определенных слов в документах Word в первых 5 строчках, сравнение найденного со списком на Листе2, подстановка слов из списка в ячейку где прописывается(а впоследствии создается на выбранном диске) путь и затем, если это не дубликат, то файл doc-перемещается в новую папку. Такая необходимость возникла, потому что файлы присылают кто во что горазд...все имена файлов названы не по системе(но этот вопрос на "потом"), а вот в структуре слава Богу шапка документа у всех одинаковая...да и все файлы кидают в одну папку, вот потому и надо все рассортировать. ПОМОГИТЕ пжлста!!!  
Я могу не спорить, что может я не там искал и не то искал, но инфы про подобное очень мало...нашел только такое  
 
Set MyWord = CreateObject("Word.Application") 'создание и присвоение переменной объекта Word(я так понимаю)  
дальше должно быть что то вроде Open.Word.Application  ...
 
ой, прошу прощения...вот сам файлик...
 
Эти 5 строк составляют один абзац, или 5 абзацев, или часть таблицы? С такими объектами в Ворде удобнее работать, чем со строками.  
Выложите пример документа.  
Что касается поиска слов в падежах, я бы предложил искать без окончания - "песочн", "взбит" и т.д.
 
Вот пример DOC-файла...Казанский! по поводу поиска без окончания...т.е. ладно, допустим найдет в ворде слово "песочн", дальше что? сравнение со списком из столбца каким образом будет происходить? можно поподробнее?  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
Опять забыл пояснение...в выложенном примере DOC-файла, бирюзовым цветом-будующая папка "Пирог" с подпапкой "Медовый"(выделено желтым)
 
{quote}{login=Miha-nikus}{date=25.04.2012 12:26}{thema=}{post}Опять забыл пояснение...{/post}{/quote}Вы ещё и Правила забыли.
 
100-крат прошу прощения!
 
Так...с частичным совпадением разобрался...нашел здесь http://www.planetaexcel.ru/tip.php?aid=177 осталось "поиск слов" в документе Word...
 
Самый простой способ - перебор слов в документе  
Option Explicit  
Sub fiveSearch()  
Dim i As Long  
For i = 1 To 40  
Debug.Print ActiveDocument.Words(i)  
Next i  
End Sub
 
ratboy!  вопрос...а i -это я так понимаю искомое слово? т.е. Dim i="медовый"...но мне то нужно чтоб он искал слова из списка "Лист2"...или i -это массив списка? можно поподробнее?
 
i - это переменная-счётчик цикла. С каждым шагом она меняет свое значение от 1 до 40. Таким образом будет прочитано 40 слов.
 
ну, то что это переменная-цикла я уже понял и что шаг этого 40 тоже...где в коде RATBOY что открывается элемент массива столбца "С"? каким образом в данном цикле  происходит поиск "нужного" слова? может я ошибаюсь, но в предложенном цикле по-моему перебираются 40 слов(не важно каких...всех подряд), а потом выводит их на лист WORD-а? короче...что то я совсем запутался...
 
{quote}{login=Miha-nikus}{date=26.04.2012 01:09}{thema=}{post} в предложенном цикле по-моему перебираются 40 слов(не важно каких...всех подряд), а потом выводит их на лист WORD-а? {/post}{/quote}Перебираются, но на "лист Word-а" не выводятся. Где Вы это увидели. И кто мешает при переборе проверить - соответствует ли текущее слово (в цикле) заданному значению.    
ratboy просто показал Вам, как можно перебрать слова в тексте.
 
А нельзя ввести переменную строки и слова?, т.е.    
 
dim str  'переменная строки  
dim wrd  'переменная для слова в строке  
dim mas-file as array filenames 'массив имен файлов  
dim ar_my as array 'массив списка1 с которым будет сравниваться  
dim arr2 as array ' массив списка2 на листе2 столбец B  
Set MyWord = CreateObject("Word.Application") 'MyWord-переменная объекта  
....... 'далее загружаем список файлов в столбец "В" из определенной папки и "говорим" что это массив имен файлов, т.е "mas-file"  
....... 'создаем единичный элемент в этом массиве, т.е., например пусть будет Element1    
....... ' открываем этот единичный элемент "Element1" массива "mas-file"(наверно что то должно оперировать с Open.Word.Application)  
.......' потом в этом единичном элементе ищем в "str" слово "wrd" в цикле от str=1 to 5  
.......' если wrd совпадает со словом из массива ar_my (диапазон на Листе2), то выводим "найденное" слово напротив ячейки с единичным элементом списка файлов в    
столбец "F" и ищем второй элемент в arr2( слово из списка столбца B на листе2)  
........' если не найдено ничего, тогда выводим знак пробела(т.е. ПУСТО)  
........' далее закрываем данный файл (выгружаем из памяти) и переходим к следующему элементу "Element1 + 1" и повторяем все что выше...и т.д.  
 
может конечно алгоритм не совсем правильный, в VB я не очень понимаю, потому и прошу ПОМОЧЬ!
 
Я так и знал, что это СЛОЖНАЯ задача! (((  не уж то никто не поможет?
 
Miha-nikus, Ваш последний пост - это из разряда "Слабо?". Такое тут не проходит. Наберитесь терпения и ждите.
 
Юрий! ни в коем случае! я не хотел никого зацепить или подколоть "слабо?". Я знаю что тут сильные люди в экселе и VB. Просто, у меня вырисовался некий алгоритм решения, но технически, из-за моих скудных познаний в VB, я бьюсь над этим почти неделю...все время вылетают ошибки...Так что...Вы правы, придется терпеливо ждать помощи...и еще раз простите, если кого невольно обидел...
 
Может "за платно" попробовать? никто не знает у кого можно?
 
Напишите мне на мыло (оно в подписи). В письме укажите ТЗ, сроки и сумму вознаграждения.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Выслал!очень надеюсь на вашу помощь,nerv!
Страницы: 1
Читают тему
Наверх