Не проверено. Если значение вашей ячейки содержит только имя рабочей книги, вам нужно будет создать свою строку с тремя входами: Location, File Name и & amp; Тип файла. Вместе они составляют переменную sFile
в приведенном ниже коде. Здесь только имя файла является динамическим (как определено значением в Col A).
Это зависит от всех ваших файлов, находящихся в одной папке. Откроется файл и скопируйте все заголовки (верхняя строка) и вставьте в поле Col B на вашем листе рядом с именем файла.
Вам нужно обновить sPath
и указать листы ( здесь "Sheet"
и "?"
). У каждой книги есть то же имя листа, которое вы ищете? У каждой книги всего 1 лист? Просто то, что вам нужно будет учитывать.
Option Explicit
Sub Tester()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim sPath As String, sFile As String
Dim wb As Workbook
Dim Headers As Range
sPath = "E:\YourPath\....."
Dim MyFileRange As Range, MyFile As Range
Set MyFileRange = ws.Range("A2:A" & ws.Range("A" & ws.Rows.Count).End(xlUp).Row)
Application.DisplayAlerts = False
Application.ScreenUpdating = False
For Each MyFile In MyFileRange
sFile = sPath & MyFile.Text & ".xlsx"
Set wb = Workbooks.Open(sFile)
If Not wb Is Nothing Then
Set Headers = wb.Sheets("?").Range("A1:A" & wb.Sheets("?").Cells(1, wb.Sheets("?").Columns.Count).End(xlToLeft).Column)
Headers.Copy MyFile.Offset(, 1)
wb.Close False
Else
MyFile.Offset(, 1) = "WORKBOOK NOT FOUND"
End If
Next MyFile
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Изменено, чтобы обрабатывать ошибку в книге, которая не найдена. В этом случае вы увидите « WORKBOOK NOT FOUND » в Col B рядом с именем файла.