Интересно, может ли кто-нибудь помочь мне, пожалуйста.
Я использую приведенный ниже код, чтобы позволить пользователю объединить несколько книг из разных папок в один рабочий лист «Сводка».
Sub Merge()
Dim DestWB As Workbook, WB As Workbook, WS As Worksheet, SourceSheet As String
Set DestWB = ActiveWorkbook
SourceSheet = "Input"
startrow = 7
FileNames = Application.GetOpenFilename( _
filefilter:="Excel Files (*.xls*),*.xls*", _
Title:="Select the workbooks to merge.", MultiSelect:=True)
If IsArray(FileNames) = False Then
If FileNames = False Then
Exit Sub
End If
End If
For n = LBound(FileNames) To UBound(FileNames)
Set WB = Workbooks.Open(Filename:=FileNames(n), ReadOnly:=True)
For Each WS In WB.Worksheets
If WS.Name = SourceSheet Then
With WS
If .UsedRange.Cells.Count > 1 Then
dr = DestWB.Worksheets("Input").Range("C" & DestWB.Worksheets("Input").Rows.Count).End(xlUp).Row + 1
Lastrow = .Range("C" & Rows.Count).End(xlUp).Row
If Lastrow >= startrow Then
.Range("A" & startrow & ":AE" & Lastrow).Copy
DestWB.Worksheets("Input").Cells(dr, "A").PasteSpecial xlValues
End If
End If
End With
Exit For
End If
Next WS
WB.Close savechanges:=False
Next n
End Sub
Код работает, но я хотел бы его немного изменить, чтобы вместо того, чтобы пользователю приходилось вручную выбирать файлы для слияния, макрос считывал список имен файлов и путей к файлам и автоматически копировал и вставлял соответствующие данные. в лист «Сводка».
Я настроил сводную рабочую книгу, чтобы появился лист под названием «Списки» с именами файлов, перечисленными в B3: B10, а в C3: C10 — соответствующими путями к файлам. Я искал «Stackoverflow» и выполнял поиск в Google, и хотя я нашел несколько сообщений по этой теме, они не показывают мне, как читать из списка имен файлов и путей, а скорее жестко кодируют конкретный каталог, который не соответствует моим потребностям.
Мне просто интересно, может ли кто-нибудь взглянуть на это, пожалуйста, и предложить некоторые рекомендации о том, как я могу добиться этого.
Большое спасибо и с уважением