Страницы: 1 2 След.
RSS
Поиск по всем файлам и вложенным папкам
 
Может кому-нибудь будет нужен такой макрос.  
 
В файле присутствует макрос "Поиск Во Всех Файлах И Папках"  
 
Данный макрос:  
1. запрашивает текст для поиска (число, слово, выражение);  
2. запрашивает папку для поиска;  
3. уточняет, искать ли данные во вложенных папках (Папка1\Папка2\Папка3 и т.д.);  
4. осуществляет поиск текста во всех файлах Excel, на всех листах, во всех вложенных папках (если в пункте 3 ответили "Да")  
5. создаёт отдельную книгу с листом "Отчёт", куда копирует найденную информацию целыми строками, с указанием папки, названия книги и листа, где было найдено  
 
Если кому-то не понравится вид, в котором макрос отображает результат поиска, то он всегда сам сможет подкорректировать макрос под свои нужды (код открыт).  
 
Если кто найдёт ошибки в коде - пишите, постараюсь исправить
 
он чем то лучше стандартного виндовского?
 
Супер!  
Спасибо Павел.  
 
ЗЫ В копилку.
 
{quote}{login=Dophin}{date=07.04.2010 07:05}{thema=}{post}он чем то лучше стандартного виндовского?{/post}{/quote}  
см. п. 5.  
Z.
 
{quote}{login=Dophin}{date=07.04.2010 07:05}{thema=}{post}он чем то лучше стандартного виндовского?{/post}{/quote}Андрей, попробуй!  
И сравни скорость для начала...
 
По-моему, лучше виндовского даже поиск в Тотале и AvSearch...
 
Ааа, ругается на FD As FileDialog:  
---------------------------  
Microsoft Visual Basic  
---------------------------  
Compile error:  
 
User-defined type not defined  
---------------------------  
 
что надо подключить? Офис 2000, ХР СП3.
 
Я понял, msoFileDialogFolderPicker не идёт под 2000. Как и весь FileDialog...  
Нельзя сделать версию под 2000? А то я сам боюсь чего-нибудь поломаю....
 
рассмотрел поближе) прикольно. Спасибо)
 
Hugo, посмотрите этот файл.    
У меня, к сожалению, нет Excel 2000, поэтому я не могу проверить свой код.  
Отпишитесь, пожалуйста, сработает у вас этот макрос или нет.  
 
P.S. Данный файл только для людей с Excel 2000
 
Небольшое дополнение к коду.    
Нужно добавить строку FoundAny = False в любое место в начале кода.
 
Работает версия для 2000, и без FoundAny = False, и уже с. Только нестабильно, пару раз вылетал Эксель.  
Но только надо из кода FD As FileDialog убрать - забылось :)
 
Странно, у меня в Excel 2003 ни разу не вылетало )  
Немного доработал код, чтобы он определял версию Excel и показывал разное окно выбора папки (для Excel 2003 одно, для Excel 2000 - другое)
 
Он, зараза, прежде чем условия проверять, объявления переменных проверяет...  и естественно, опять  
Dim FD As FileDialog  
:(
 
а затем уже и picker...  
В общем, я эту парочку заглушил - работает!
 
а в обработку версий можно еще добавить, что если 2007, то он бы искал  
       If LCase(Right(iFile, 4)) = "xlsx" Then...  
? :)  
Павел, Вы как не зайдете, так у Вас такие глобальные проекты, в которые каждый хочет свои хотелки включить :) (это я про калькулятор вспомнил :))
 
{quote}{login=Hugo}{date=07.04.2010 10:59}{thema=}{post}а затем уже и picker...  
В общем, я эту парочку заглушил - работает!{/post}{/quote}  
 
Ну, и отлично) просто мне без установленного Excel 2000 трудно предлагать варианты решения )
 
Haken )) Сергей, а это идея про Excel 2007 )) надо подумать)    
 
P.S. ой, про калькулятор и не вспоминайте )) а то мне плохо становится ))
 
всё-таки, я бы по умолчанию убрал "текст для поиска". а то вдруг кто-нибудь захочет именно "текст для поиска" найти, а он ошибку выдаст... :)  
 
К 2007 продолжение идеи: там же куча расширений появляется... xlsm, xlsb...  
наверно при 2003 и ниже надо смотреть файлы *xls (как сейчас), а при 2007 - и эти, и *xls? - т.е. без последнего знака.  
 
на всякий случай (а то мало ли нет под рукой 2007 ;)))  
Application.Version = 12.0
 
Вот доработал для Excel 2007. Потестируйте )  
 
P.S. В Excel 2000 - не работает )
 
{quote}{login=Pavel55}{date=08.04.2010 12:27}{thema=}{post}Вот доработал для Excel 2007. Потестируйте )  
 
P.S. В Excel 2000 - не работает ){/post}{/quote}  
Протестируйте- заметьте не я это предложил. Историю с калькулятором помню.. сочуствую.  
А можно сделать так чтобы найденный адрес слова фразы был гиперссылкой на найденое место?
 
Микки, так подойдёт? )
 
{quote}{login=Pavel55}{date=08.04.2010 02:45}{thema=}{post}Микки, так подойдёт? ){/post}{/quote} <BR>Выкладываю результат .. как гиперссылка на указанную папку книгу и лист не работает (а хотелось именно так).. и книга не может быть у меня названа Лист4 <BR><STRONG>Файл удален</STRONG> - велик размер. [Модераторы]
 
Микки, вы выложили большой файл и модераторы его удалили. Сожмите ваш файл WinRar'ом.  
 
P.S. Люди, а кто знает, как сделать гиперссылку на определённый файл с определённым листом и определённой ячейкой?  
 
У меня получается лишь на книгу сделать  
Papka = "C:\Temp\"  
iTempWB.Name = "Книга1.xls"  
ActiveSheet.Hyperlinks.Add Anchor:=Cells(1, 1), Address:=Papka & iTempWB.Name  
 
А нужно что-то типа: ='"C:\Temp\[Книга1.xls]Лист3'!$B$45"
 
А вот так разве не пойдёт?
 
Дим, у меня открывает именно указанную книгу, на нужном листе и активирует указанную ячейку. Может в 2007-ом не так?
 
Проверили на одном экземпляре 2007-го - гиперссылка не активирует нужную ячейку на нужном листе в нужной книге. Это у всех так? У меня (2003) работает корректно.
 
Я пробовал вчера, когда корректировал макрос для Гиперссылки. У меня не вышло. Гиперссылка открывает лишь ту книгу с тем активным листом, с которым книга была сохранена. Т.е. если код нашёл совпадения на Лист5, а книга была сохранена с активным Лист1, то гиперссылка отрывает файл с Лист1.  
 
Микки, как видишь не получается так, как ты хочешь.  
 
P.S. Немного обновил файл.  
 
P.P.S. Проверял макрос на нескольких компах, с поискам по многим файлам (более 100), он где-то выдаёт ошибку 13 (Type Mismatch), заметил, что в тех файлах присутствовали листы с Диаграммами. Т.к. макрос проходит по всем листам и видно случается ошибка на листе с Диаграммой, т.к там нем Cells.  
 
Сейчас заменил строку  
 
For Each iSht In iTempWB.Sheets  
 
на  
 
For Each iSht In iTempWB.Worksheets  
 
надеюсь такой ошибку больше не будет.
 
Огромное спасибо!
 
Не судьба у меня кстати тоже ошибка выскакивала, очень хорошо что исправили. За то что сделали огромное спасибо.
Страницы: 1 2 След.
Наверх