Скопируйте отфильтрованные данные из закрытой книги на основе именованного диапазона

226
Jonas Tiger

Первый подход здесь.

Интересно, можете ли вы помочь мне решить следующую проблему: я нашел этот код, и мне нужно приспособить его к моим потребностям, но я не знаю, как это сделать:

Есть файл (Closed.xlsx), который ежедневно экспортируется с сервера, с переменным размером каждый день (> 100000 строк). Мне нужно отфильтровать и скопировать конкретные данные (столбцы 1,3,8,24,27) из этого файла на основе критериев (названный диапазон, называемый «TECH», информация которого содержится в столбце 8 ). У TECH есть названия определенной команды техников (Джон, Ричард, Чарльз, ...). Отфильтрованные данные будут вставлены в файл Open.xlsm «Отчет» (та же папка). Я работаю с Excel 2013/2016

Моя цель: открыть книгу "Open.xlsm", лист "Report" и автоматически обновить отфильтрованные данные

Option Explicit   'you can extract data from a closed file by using an 'XLM macro. Credit for this technique goes to John 'Walkenback > http://j-walk.com/ss/excel/tips/tip82.htm  Sub GetDataDemo()   Dim FilePath$, Row&, Column&, Address$    'change constants & FilePath below to suit '*************************************** Const FileName$ = "Closed.xlsx"  Const SheetName$ = "DataList"  Const NumRows& = 100000 'Need to configure range from A1 to last row non blank to get range exact size Const NumColumns& = 28 'Or setup only cols 1,3,8,24,27 FilePath = ActiveWorkbook.Path & "\"  '***************************************   DoEvents  Application.ScreenUpdating = False  If Dir(FilePath & FileName) = Empty Then  MsgBox "The file " & FileName & " was not found",, "File Doesn't Exist"  Exit Sub  End If  For Row = 1 To NumRows  For Column = 1 To NumColumns  Address = Cells(Row, Column).Address 'How to setup named range  Cells(Row, Column) = GetData(FilePath, FileName, SheetName, Address)  Columns.AutoFit  Next Column  Next Row  ActiveWindow.DisplayZeros = False  End Sub      Private Function GetData(Path, File, Sheet, Address)  Dim Data$  Data = "'" & Path & "[" & File & "]" & Sheet & "'!" & _ Range(Address).Range("A1").Address(,, xlR1C1)  GetData = ExecuteExcel4Macro(Data)  End Function 

Спасибо вам большое за ваше внимание. JT

0

0 ответов на вопрос

Похожие вопросы