Добрый день.
Не могу допетрить , как лучше сделать . Имеется закрытая книга на сетевом диске, из нее мне нужно вытащить данные по критерии в active.workbook .
Выполнить левый ВПР по типу ( индекс+поискпоз).
Вариантов тут два
1)открывать книгу внутри процедуры, загонять все в массивы сравнивать , записывать найденные данные в active.workbook , закрывать книгу сервера.
2) UDF из закрытой книги.
Я пошел по второму пункту, но предварительно выгружал данные в активную книгу в создаваемый временный лист, и с помощью UDF по типу Vlookups, далее хотел получить данные столбца A файла на сервере, после удалить вспомогательный лист. Но насколько понимаю можно сразу вытащить нужные данные напрямую...
Внести данные нужно в файле "Критерии" ,в желтый столбец. Данные нужны из столбца A файла "вытащить данные"
Файл "критерии" active.workbook
Файл "вытащить данные" - файл на сетевом диске
P.s пример кода не будет работать , он из конкретного проекта. Сама суть.....
Не могу допетрить , как лучше сделать . Имеется закрытая книга на сетевом диске, из нее мне нужно вытащить данные по критерии в active.workbook .
Выполнить левый ВПР по типу ( индекс+поискпоз).
Вариантов тут два
1)открывать книгу внутри процедуры, загонять все в массивы сравнивать , записывать найденные данные в active.workbook , закрывать книгу сервера.
2) UDF из закрытой книги.
Я пошел по второму пункту, но предварительно выгружал данные в активную книгу в создаваемый временный лист, и с помощью UDF по типу Vlookups, далее хотел получить данные столбца A файла на сервере, после удалить вспомогательный лист. Но насколько понимаю можно сразу вытащить нужные данные напрямую...
Внести данные нужно в файле "Критерии" ,в желтый столбец. Данные нужны из столбца A файла "вытащить данные"
Файл "критерии" active.workbook
Файл "вытащить данные" - файл на сетевом диске
P.s пример кода не будет работать , он из конкретного проекта. Сама суть.....
Код |
---|
Sub данные_close_book() Dim sPath As String, sFile As String, sShName As String Application.DisplayAlerts = 0 sPath = "D:\Excle не трогать\8_Visual Managment\" '" sFile = "вытащить данные.xlsx" '" sShName = "Test" '" Worksheets.Add.Name = "Test" With Range("a1:N10000") .Formula = "='" & sPath & "[" & sFile & "]" & sShName & "'!" & "C5" '" '"A1" - указывается начальная ячейка диапазона, из которого необходимо получить значения .Value = .Value End With Application.DisplayAlerts = 1 End Sub Sub zapolnit() Application.DisplayAlerts = 0 Dim k As Long k = ActiveWorkbook.Sheets("Критерии").Cells(Rows.Count, "a").End(xlUp).Row With Range("b2:b" & k) .FormulaR1C1 = "=INDEX(Test!R1C1:R10000C324,MATCH(--Sheet1!RC6,Test!R1C12:R10000C12,0),1)" ' тут она не корректна,для конкретного примера была верной .Value = .Value ' тут я ловил ошибку Overfloor ,переполнение памяти.... ActiveWorkbook.Sheets("Test").Delete Application.DisplayAlerts = 1 End With End Sub |