Объединение первых листов нескольких файлов Excel в другой лист

У нас есть три файла, файлы 1 и 2 содержат данные на листе 1. В файле 3 на листе 2 есть кнопка и таблица (содержащая сведения о файле 1 и 2, такие как имя файла и путь):

File 1
ABC 123

File 2
BAC 321

После нажатия кнопки на листе 2 макрос должен извлечь данные из листа 1 файла 1 и 2 и поместить их в лист 1 файла 3, как показано ниже:-

File 3
ABC 123
BAC 321

Я нашел несколько кодов, использующих следующие функции, чтобы сделать то же самое, но они будут работать только на листе, в котором находится код.

arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
      Range(ref).Range("A1").Address(, , xlR1C1)
'   Execute an XLM macro
    GetValue = ExecuteExcel4Macro(arg)

1 ответ

Вот хорошая ссылка на то, что вы пытаетесь сделать. Получить информацию из закрытого файла


Вот код, который поможет вам начать. Сейчас он настроен на то, чтобы взять первый путь к файлу из листа2 "А1" и имя рабочей книги из "А2" и вернуть значение в лист1 "А1". После того, как у вас все получится, вам нужно будет перебрать свой диапазон (зависит от того, как у вас настроены параметры) и отобразить результаты.

Sub ReadDataFromAllWorkbooksInFolder()
    Dim FolderName As String, wbName As String, r As Long, cValue As Variant
    Dim wbList() As String, wbCount As Integer, i As Integer

    'Path from sheet two in macro book
    FolderName = Worksheets(2).Range("A1").Text

    'File Name from sheet two in macro book
    Filename = Worksheets(2).Range("A2").Text
    wbName = Worksheets(2).Range("A2").Text

    cValue = GetValue(FolderName, wbName, "Sheet1", "A1")
    Worksheets(1).Cells(1, 1).Formula = cValue
End Sub

Function GetValue(Path, File, Sheet, Ref)
     'Retrieves a value from a closed workbook
    Dim Arg As String
     'Make sure the file exists
    If Right(Path, 1) <> "\" Then Path = Path & "\"
    If Dir(Path & File) = "" Then
        GetValue = "File not  Found"
        Exit Function
    End If
     'Create the argument
    Arg = "'" & Path & "[" & File & "]" & Sheet & "'!" & Range(Ref.Range("A1").Address(, , xlR1C1))
     'Execute XLM macro
    GetValue = ExecuteExcel4Macro(Arg)
End Function
Другие вопросы по тегам