Извлечение данных из закрытого файла в другой книге — частый запрос большинства пользователей 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 »:

img1

Чтобы автоматически сохранять данные из файла «Closed.xls» в файл «Open.xls», нам необходимо выполнить следующие шаги для запуска редактора VB. Щелкните вкладку «Разработчик». В группе «Код» выберите Visual Basic

img2

  • Скопируйте приведенный ниже код в 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

img3

  • Чтобы получить данные из «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

img4

  • Скопируйте следующий код в ThisWorkbook (Open.xls)

Private Sub Workbook_Open()

Run "Importdata"

End Sub

img5

Теперь все коды VBA установлены; все, что нам нужно сделать, это открыть файл с именем «Open.xls». Ниже приведен снимок файла «Open.xls»:

img6

Код не ограничивается копированием ячейки из A1.usedrange; код выберет начальный диапазон и будет работать отлично. Файлы доступны для загрузки, и мы рекомендуем вам попробовать.

===

Заключение: с кодом VBA мы можем автоматизировать задачу извлечения данных, не открывая целевую книгу, и мы избавляемся от ручного копирования и вставки.

rar icon

Если вам понравились наши блоги, поделитесь ими с друзьями на Facebook. А также вы можете подписаться на нас в Twitter и Facebook .

Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить, дополнить или усовершенствовать нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]