|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.01.2014, 13:43 | #1 |
Пользователь
Регистрация: 18.06.2013
Сообщений: 57
|
Перебор файлов с помощью CommandButton
Уважаемые программисты,
Подскажите, пожалуйста, как можно поступить: Хотела сделать навигацию при поиске ячеек с определенной частью текста во всех excel-файлах, которые находятся в определенной папке. Вот задумка: 1) Открывается первый файл 2) Появляется UserForm c 3мя CommandButton: "Previous", "Next", при их помощи можно переходить к предыдущей, либо следующей нужной ячейке; "Exit" для завершения процесса в любой момент; и TextBox в котором выводится содержание ячейки. Т.е. открылся файл, если в данном файле две ячейки, содержащие (например) сочетание "BBB", то появляется userform c TextBox в котором (напр.) "BBB44553", при нажатии "Next" появлялось содержание следующей ячейки (напр.) "BBB22", - если нажимаем в этот момент "Previous", то выводится "BBB44553", - если "Next" то эта книга закрывается, т.к. в ней больше нет ячеек с таким содержанием, и открывается следующая книга, в TextBox появляется новая надпись с "BBB". -если в нажать "Previous", то закроется этот файл, откроется предыдущий, выведется "BBB22", - если "Next" то выведется следующая нужная ячейка данного файла если такая имеется, если нет, то этот файл закрывается, открывается новый и т.д. пока не будут показаны поочередно при помощи ручного переключения все ячейки во всех файлах определенной папки с содержанием "BBB". Не получается скомпоновать следующий код: Часть I "Для навигации при поиске в определенном файле" '********************************** ***************** Sub otkrivaet_perviy_fail_vivodit_1y_nu zhniy_text () Dim bb As Integer bb = 1 status_treida = Worksheets("aacc").Cells(bb, 5).Value mycheck = status_treida Like "*BBB*" If mycheck = True Then Cells(bb, 5).Select UserForm1.TextBox1.Value = status_treida UserForm1.Show End If End Sub Private Sub CommandButton1_Click() ' "Previous" Dim selA As Integer selA = Selection.Row - 1 Unload UserForm1 status_treida = Worksheets("aacc").Cells(selA, 5).Value mycheck = status_treida Like "*BBB*" If mycheck = True Then Cells(selA, 5).Select UserForm1.TextBox1.Value = status_treida UserForm1.Show End If End Sub Private Sub CommandButton2_Click() ' "Next" Dim selA As Integer selA = Selection.Row + 1 Unload UserForm1 status_treida = Worksheets("aacc").Cells(selA, 5).Value mycheck = status_treida Like "*BBB*" If mycheck = True Then Cells(selA, 5).Select UserForm1.TextBox1.Value = status_treida UserForm1.Show End If End Sub Private Sub CommandButton3_Click() ' "Exit" Unload UserForm1 End Sub '********************************** ******************* Часть II "Перебор файлов" '__________________________________ __________________________ Sub gfcmkjh() Dim xDirect$, xFname$, InitialFoldr$ InitialFoldr$ = "C:\Users\" '<<< Startup folder to begin searching from With Application.FileDialog(msoFileDialo gFolderPicker) .InitialFileName = Application.DefaultFilePath & "\" .Title = "Please select a folder to list Files from" .InitialFileName = InitialFoldr$ .Show If .SelectedItems.Count <> 0 Then xDirect$ = .SelectedItems(1) & "\" xFname$ = Dir(xDirect$, 7) Do While xFname$ <> "" HhHhH = "C:\Users\" & xFname$ Workbooks.Open Filename:=HhHhH Workbooks(xFname$).Activate '.......................... ActiveWorkbook.Close xFname$ = Dir Loop End If End With End Sub '__________________________________ _______________________ а нельзя ли сделать как-нибудь чтобы при нажатии кнопок первый код не прерывался? Возможно ли в основном коде написать то, что будет происходить при нажатии CommandButton, а не в "Private Sub CommandButton_Click()" Что-нибудь вроде"If CommandButton1 = True then..." ? Или как можно по-другому решить задачу? С наилучшими пожеланиями, Puffi.Muffi |
22.01.2014, 15:42 | #2 |
Пользователь
Регистрация: 18.06.2013
Сообщений: 57
|
Уважаемые профессионалы,
Плиз напишите, что Вы обо всем этом думаете: Слишком долгое сообщение? Не совсем ясная задача? Требует много времени для решения? Тут главный вопрос: Как можно кнопками на Фоме "Назад" и "Вперед" открывать поочередно файлы находящиеся в одной папке? Спасибо за внимание, Puffi.Muffi |
23.01.2014, 06:15 | #3 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Код:
Код:
http://excelvba.ru/code/FilenamesCollection -------------------- Возможно, ещё это поможет: http://excelvba.ru/code/SearchCells Результаты поиска выводятся на форму, для перехода к найденной ячейке достаточно щелкнуть мышью на нужном результате - автоматически будет активирован нужный лист, и выделена искомая ячейка.
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 23.01.2014 в 06:19. |
|
23.01.2014, 12:20 | #4 |
Пользователь
Регистрация: 18.06.2013
Сообщений: 57
|
Спасибо EducatedFool Вам большое! код подходит, основная часть задачи решена, над остальным буду работать.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
импорт значений диапозона ячеек из одной книги в другую с помощью элемента управления CommandButton | ViktorASh | Microsoft Office Excel | 1 | 27.11.2013 20:46 |
2008: Перебор каталогов и файлов в проекте консольного приложения | stinger2012 | Visual C++ | 0 | 03.05.2012 16:14 |
Перебор файлов Excel | coder082 | Microsoft Office Excel | 4 | 08.06.2010 11:21 |
перебор файлов | Ralf_ru | Общие вопросы Delphi | 11 | 31.03.2009 14:23 |
Копирование файлов с помощью copyfile | mopozoff | Общие вопросы Delphi | 3 | 13.06.2008 12:59 |