В этой статье мы создадим процедуру для извлечения данных из закрытой книги в активную с помощью кода VBA.

Необработанные данные, которые мы хотим получить, находятся в диапазоне A13: E22 на листе «Sheet1» в файле «DataFile.xlsx», который находится по пути «C: \ Users \ Ramandeep \ Desktop».

dataFile

Логическое объяснение

В этой статье мы создали две процедуры: -. CallingMainProcedure. GetValuesFromAClosedWorkbook

Процедура CallingMainProcedure

Эта процедура используется для вызова процедуры «GetValuesFromAClosedWorkbook». Он присваивает значения параметру процедуры GetValuesFromAClosedWorkbook.

Процедура GetValuesFromAClosedWorkbook

Эта процедура принимает в качестве параметров путь к файлу и имя файла закрытой книги. Он также принимает в качестве параметра имя листа и диапазон из закрытой книги. Используя значение входного параметра, формула массива вводится в диапазон A13: E22 активного листа как \ {= ‘C: \ Users \ Ramandeep \ Desktop \ [DataFile.xlsx] Sheet1’! A13: E22} Формула массива возвращает требуемые данные из закрытой книги. После получения данных на активном листе формулы из листа удаляются путем замены формул на значение.

ArrowAfterRunningMacro

Пожалуйста, введите код ниже

Option Explicit

Sub CallingMainProcedure()

'Calling GetValuesFromAClosedWorkbook procedure

'Specifying the file path, filename, sheet name and range of data

GetValuesFromAClosedWorkbook "C:\Users\Ramandeep\Desktop", "DataFile.xlsx", _

"Sheet1", "A13:E22"

End Sub

Sub GetValuesFromAClosedWorkbook(fPath As String, _

fName As String, sName, cellRange As String)



With ActiveSheet.Range(cellRange)

'Assigning the array formula to the specified range

.FormulaArray = "='" & fPath & "\[" & fName & "]" & sName & "'!" & cellRange

'Removing formula from the cell and pasting the values in the cell

.Value = .Value

End With

End Sub

Если вам понравился этот блог, поделитесь им с друзьями на Facebook и Facebook.

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