Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 25.12.2016
Сообщений: 17

Код по поиску заданного значения во всех таблицах выбранной директории

27.10.2023, 14:23. Показов 673. Ответов 2

Студворк — интернет-сервис помощи студентам
Имеется код по поиску заданного значения во всех таблицах выбранной директории с последующей выгрузкой его на лист с именем "Данные".
Код я честно позаимствовал одного человека из интернетов и попытался переработать под себя, но ввиду нехватки знаний застопорился ещё на этапе его изучения. Автор же обратной связи не даёт, из-за чего лично у него проконсультироваться не имею возможности.

В частности вызывает вопрос условие:
Visual Basic
1
Loop While strFirstAddress <> rFound.Address
Не понимаю, почему код составлен именно так.

И, быть может, кто-нибудь подскажет, как грамотно сделать так, чтобы:
– скрипт игнорировал в поиске шапку (7 строк с обозначениями и справкой) рабочих таблиц;
– поиск осуществлялся только построчно, то есть после нахождения одного совпадения в строке, осуществлялся переход на следующую.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Public Sub SearchFolders()
 
Dim fso As Object
Dim fld As Object
Dim strSearch As String
Dim strPath As String
Dim strFile As String
Dim wOut As Worksheet
Dim wbk As Workbook
Dim wks As Worksheet
Dim lRow As Long
Dim rFound As Range
Dim strFirstAddress As String
 
On Error GoTo ErrHandler
 
Application.ScreenUpdating = False
 
'Change as desired
Dim FD As FileDialog
        Set FD = Application.FileDialog(msoFileDialogFolderPicker)
        With FD
            .AllowMultiSelect = False
            .Title = "Укажите нужную директорию"
            .ButtonName = "Выбрать папку"
            If .Show = False Then Exit Sub Else strPath = .SelectedItems(1) & Application.PathSeparator
        End With
        Set FD = Nothing
        
 
strSearch = InputBox("Введите искомое слово:", "Поиск", "")
 
If strSearch = "" Then
Exit Sub
End If
 
Set wOut = Worksheets("Данные")
 
lRow = 9
lRowCount = 1
 
With wOut
.Range("A10:K500").ClearContents
 
 
Set fso = CreateObject("Scripting.FileSystemObject")
Set fld = fso.GetFolder(strPath)
strFile = Dir(strPath & "\*.xls*")
 
Do While strFile <> ""
    Set wbk = Workbooks.Open _
        (Filename:=strPath & "\" & strFile, _
        UpdateLinks:=0, _
        ReadOnly:=True, _
        AddToMRU:=False)
        For Each wks In wbk.Worksheets
        
            Set rFound = wks.UsedRange.Find(strSearch)
            LastRow = Cells(10, 1).End(xlDown).Row
                If Not rFound Is Nothing Then
                  strFirstAddress = rFound.Address
                End If
            Do
              If rFound Is Nothing Then
                Exit Do
              Else
                rFoundRow = rFound.Row
                RowCounter = RowCounter + 1
                lRow = lRow + 1
                .Rows(lRow) = Rows(rFoundRow).Value
                .Cells(lRow, 1) = lRowCount
 
              End If
             lRowCount = lRowCount + 1
            Set rFound = wks.Cells.FindNext(After:=rFound)
            Loop While strFirstAddress <> rFound.Address
        Next
    
    wbk.Close (False)
    strFile = Dir
Loop
 
End With
 
MsgBox "Готово"
Worksheets("Данные").Activate
ExitHandler:
 
Set wOut = Nothing
Set wks = Nothing
Set wbk = Nothing
Set fld = Nothing
Set fso = Nothing
Application.ScreenUpdating = True
Exit Sub
 
ErrHandler:
MsgBox Err.Description, vbExclamation
Resume ExitHandler
 
End Sub
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.10.2023, 14:23
Ответы с готовыми решениями:

Автоматическое добавление надписи ко всем изображениям заданного формата в выбранной директории
Всем привет! вот задание: &quot;Создать приложение, которое позволяет добавлять указанному изображению заданную надпись (шрифт, размер, цвет,...

Запись имен всех папок и файлов из выбранной директории в блокнот
Здравствуйте. Мне нужно чтобы из выбранной директории названия всех папок и файлов записывались в блокнот. Например на диске Д у меня 2...

Вывод всех файлов и поддиректорий в заданной директории (добавить в код ввод директории)
.586p .model flat, stdcall std_output_handle equ -11 std_input_handle equ -10 extern wsprintfA:near extern CharToOemA@8:near ...

2
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
27.10.2023, 15:58
Лучший ответ Сообщение было отмечено 1avrushka как решение

Решение

Это в VBA спрашивайте: https://www.cyberforum.ru/vba/
У нас тут VB6
1
1 / 1 / 0
Регистрация: 25.12.2016
Сообщений: 17
31.10.2023, 15:18  [ТС]
Спасибо большое и прошу прощения!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.10.2023, 15:18
Помогаю со студенческими работами здесь

Поиск во всех таблицах, если точного значения не знаю
Друзья, добрый день. Подскажите, пожалуйста, новичку в SQL. У меня есть чужая БД с довольно обширной структурой. Мне нужно найти...

Подсчитать суммарное количества всех файлов заданного типа в указанной директории
Разработать функцию подсчета суммарного количества всех файлов заданного типа в указанной директории. #include &lt;stdio.h&gt; ...

Дополнить код вычисления значения в зависимости от выбранной функции
Здравствуйте, прошу помочь дополнить код чтобы найти y. Ступор на синус в кубе, и квадратных скобках. Не знаю как грамотно написать. Нашел...

Разработать функцию подсчета суммарного размера всех файлов заданного шаблона в указанной директории
Разработать программу для решения задачи с файловой системой. Разработать функцию подсчета суммарного размера всех файлов заданного...

Удаление всех вхождений заданного значения из заданного массива целых чисел
Первая программа звучит так &quot;Напишите программу для удаления всех вхождений заданного значения из заданного массива целых чисел и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru