Попробуй ... я просто максимально использовал твой код, но в идеальном мире ты можешь уменьшить его как минимум до половины.Я рекомендую иметь несколько заголовков на вашем мастер листе, и только очистить под заголовками и копировать соответственно ...
Sub UpdateMasterLog()
Dim MainWorkbook As Workbook: Set MainWorkbook = ThisWorkbook
Dim Station1Workbook As Workbook, Station2Workbook As Workbook
Dim FilesSheet As Worksheet: Set FilesSheet = MainWorkbook.Sheets("Files")
Dim MasterSheet As Worksheet: Set MasterSheet = MainWorkbook.Sheets("Master Log")
Dim wsSrc As Worksheet
MasterSheet.Cells.ClearContents
Dim InputFilePath As String, InputFileName As String, InputFileTab As String
Dim rngToCopy As Range
Dim lRowDst As Long, lRowSrc As Long, lColSrc As Long
'Station1Workbook
With FilesSheet
InputFilePath = .Cells(1, 2)
InputFileName = .Cells(2, 2)
InputFileTab = .Cells(3, 2)
.Cells(4, 2) = FileDateTime(InputFilePath + InputFileName)
End With
Set Station1Workbook = Workbooks.Open(InputFilePath + InputFileName)
Set wsSrc = Station1Workbook.Sheets(InputFileTab)
With MasterSheet
lRowDst = 1 'if all clear should, last row is 1... ideally should have some headers and clear only under headers...
With wsSrc
lRowSrc = .Cells(.Rows.Count, 1).End(xlUp).Row
lColSrc = .Cells(1, .Columns.Count).End(xlToLeft).Column
End With
'Allocate the values
.Range(.Cells(lRowDst, 1), .Cells(lRowSrc, lColSrc)).Value = wsSrc.Range(wsSrc.Cells(1, 1), wsSrc.Cells(lRowSrc, lColSrc)).Value
End With
Station1Workbook.Close Savechanges:=False
'Station2Workbook
With FilesSheet
InputFilePath = .Cells(5, 2)
InputFileName = .Cells(6, 2)
InputFileTab = .Cells(7, 2)
.Cells(8, 2) = FileDateTime(InputFilePath + InputFileName)
End With
Set Station2Workbook = Workbooks.Open(InputFilePath + InputFileName)
Set wsSrc = Station2Workbook.Sheets(InputFileTab)
With MasterSheet
lRowDst = .Cells(.Rows.Count, 1).End(xlUp).Row
With wsSrc
lRowSrc = .Cells(.Rows.Count, 1).End(xlUp).Row
lColSrc = .Cells(1, .Columns.Count).End(xlToLeft).Column
End With
'Allocate the values
.Range(.Cells(lRowDst + 1, 1), .Cells(lRowDst + lRowSrc, lColSrc)).Value = wsSrc.Range(wsSrc.Cells(2, 1), wsSrc.Cells(lRowSrc, lColSrc)).Value
End With
Station2Workbook.Close Savechanges:=False
End Sub
РЕДАКТИРОВАТЬ: фиксированные диапазоны второго копирования.