Скопируйте отфильтрованные данные из закрытой книги на основе именованного диапазона
Первый подход здесь.
Интересно, можете ли вы помочь мне решить следующую проблему: я нашел этот код, и мне нужно приспособить его к моим потребностям, но я не знаю, как это сделать:
Есть файл (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 ответов на вопрос
Похожие вопросы
-
5
Как переместить мой компьютер в экземпляр виртуальной машины?
-
3
Есть ли ограничение размера блока передачи данных USB2.0?
-
1
Как отправить mp3 файлы на номер мобильного телефона?
-
-
1
Как я могу измерить мою передачу данных?
-
4
Высокоскоростной обмен данными между двумя компьютерами
-
2
Почему некоторые ПК теряют данные, поступающие через USB-порт?
-
5
Как долго (максимальная длина) может передавать сигнал USB 2.0 через концентраторы?
-
2
Как подсчитать, сколько времени потребуется для передачи 10 ТБ на разных скоростях?
-
1
Как добавить список в раскрывающийся список Infopath?
-
1
сколько передачи данных "слишком много" на HD?