Вытащите данные из закрытой книги
Извлечение данных из закрытого файла в другой книге — частый запрос большинства пользователей Excel. Они хотят получить или объединить данные из закрытых файлов; однако это невозможно. Есть обходной путь, который помогает решить эту проблему. Решение — использование макроса .
Вопрос: Ежедневно я трачу время на копирование данных из одного файла в другой. Есть два файла: «Open.xls» и «Closed.xls», и я хочу скопировать данные из «Closed.xls» в «Open.xls» с помощью кода VBA.
===
Что нужно знать:
Во-первых, мы должны знать «Используемый диапазон» закрытой книги, то есть «Closed.xls» в открытой книге, например, «Open.xls». Мы можем использовать функцию IF в Usedrange рабочей книги «Closed.xls» в книге «Open.xls», и она будет извлекать данные из книги «Closed.xls» * Если ссылочная ячейка пуста, #N / А ставится на место. Затем, используя метод specialcells, вы можете удалить все ошибки # N / A и изменить формулу на значения. Для начала мы сохраним два файла excel 1) Open.xls 2) Closed.xls в пути «D: \ Test. Папка »Ниже приведен снимок книги« Closed.xls »:
Чтобы автоматически сохранять данные из файла «Closed.xls» в файл «Open.xls», нам необходимо выполнить следующие шаги для запуска редактора VB. Щелкните вкладку «Разработчик». В группе «Код» выберите Visual Basic
-
Скопируйте приведенный ниже код в ThisWorkbook (Closed.xls)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel As Boolean) 'Put in the UsedRange Address of Sheet1 Closed.xls (this workbook)' --- Comment Sheet2.Cells(1, 1) = Sheet1.UsedRange.Address End Sub
-
Чтобы получить данные из «Open.xls», скопируйте следующий код в стандартный модуль
Sub Importdata() Dim AreaAddress As String Sheet1.UsedRange.Clear Sheet1.Cells(1, 1) = "= 'D:\Test Folder\" & "[Closed.xls]Sheet2'!RC" AreaAddress = Sheet1.Cells(1, 1) With Sheet1.Range(AreaAddress) .FormulaR1C1 = "=IF('D:\Test Folder\" & "[Closed.xls]Sheet1'!RC="""",NA(),'D:\Test Folder\" & _ "[Closed.xls]Sheet1'!RC)" On Error Resume Next .SpecialCells(xlCellTypeFormulas, xlErrors).Clear On Error GoTo 0 .Value = .Value End With End Sub
-
Скопируйте следующий код в ThisWorkbook (Open.xls)
Private Sub Workbook_Open() Run "Importdata" End Sub
Теперь все коды VBA установлены; все, что нам нужно сделать, это открыть файл с именем «Open.xls». Ниже приведен снимок файла «Open.xls»:
Код не ограничивается копированием ячейки из A1.usedrange; код выберет начальный диапазон и будет работать отлично. Файлы доступны для загрузки, и мы рекомендуем вам попробовать.
===
Заключение: с кодом VBA мы можем автоматизировать задачу извлечения данных, не открывая целевую книгу, и мы избавляемся от ручного копирования и вставки.
Если вам понравились наши блоги, поделитесь ими с друзьями на Facebook. А также вы можете подписаться на нас в Twitter и Facebook .
Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить, дополнить или усовершенствовать нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]