Страницы: 1
RSS
VBA. Массовый поиск содержимого ячейки с неизвестным адресом
 
Добрый день.
Подскажите, как доработать код.
Код
Sub Main()

    Dim f As String, p As String, x As Object, y
    Application.ScreenUpdating = False
    Rows("2:" & Rows.Count).ClearContents
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Укажите рабочую папку": .Show
        If .SelectedItems.Count = 0 Then Exit Sub
        p = .SelectedItems(1) & "\"
        
    End With
    Set y = CreateObject("Scripting.Dictionary")
    f = Dir(p & "*.xls*")
    Do While f <> ""
        Set x = GetObject(p & f)
       
        y.Item(f) = x.Sheets(1).[A1].Text
        x.Close: f = Dir
    Loop
    [A2].Resize(y.Count).Value = Application.Transpose(y.Items)
    [B2].Resize(y.Count).Value = Application.Transpose(y.Keys)
End Sub
 
Есть вот такой код, взят из интернета, он выводит содержимое ячейки заданного адреса со всех файлов, которые находятся в выбранной папке.[
В данном коде именно с ячейки А1, мне же нужно сделать так, что бы для каждого файла был индивидуальный адрес, который определяется через "ПОИСКПОЗ" и далее смещение на 3 строки вниз и один столбец вправо. Т.е. в каждом файле, где есть искомая фраза (она всегда в столбце А, но на разных строках) на 3 строки ниже в соседнем столбце находится та информация, которую я хочу вытащить, ну а если в файле отсутствует искомая фраза - его надо пропустить( или написаль, что нет информации).

Сможете помочь?
 
В строку 16 вставьте записанный рекордером код с своим ПОИСКПОЗ, проверкой что нашлось, смещение это offset(строка, столбец).
Ну и я бы не брал Text, но это уже по задаче.
Вот например код:
Код
xx = Application.WorksheetFunction.Match(критерий, Range("A:A"), 0)

Далее проверка xx.
Изменено: Hugo - 23.07.2021 18:50:12
 
Здраствуйте, что то я делаю не так.
Код
Sub Main()

    Dim f As String, p As String, x As Object, y
    Application.ScreenUpdating = False
    Rows("2:" & Rows.Count).ClearContents
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Укажите рабочую папку": .Show
        If .SelectedItems.Count = 0 Then Exit Sub
        p = .SelectedItems(1) & "\"
        
    End With
    Set y = CreateObject("Scripting.Dictionary")
    f = Dir(p & "*.xls*")
    Do While f <> ""
        Set x = GetObject(p & f)
        xx = Application.WorksheetFunction.Match("Данные реестра:", Range("A:A"), 0)
        y.Item(f) = x.Sheets(1).Cells(xx + 3, 2).Text
        x.Close: f = Dir
    Loop
    [A2].Resize(y.Count).Value = Application.Transpose(y.Items)
    [B2].Resize(y.Count).Value = Application.Transpose(y.Keys)
End Sub
Страницы: 1
Наверх