将工作表复制到另一个工作簿中工作表的最后一行

我被卡在代码块中,将工作表(“新分布”)从另一个工作簿复制到工作表的最后一行(“源”)。 错误是运行时错误9.我的代码有什么问题? 任何回应将不胜感激。

Private Sub copylog3() Dim lRow As Long Dim NextRow As Long, a As Long Dim i As Integer Dim ret Dim log As Workbook lRow = Sheets("Macro Template").Cells(Rows.Count, "A").End(xlUp).Row + 1 Range("A7:AM" & lRow).Copy Sheets("Newly Distributed").Range("A1").PasteSpecial xlPasteValues ret = Application.GetOpenFilename(FileFilter:="Excel Workbooks (*.xls, .xlsx*),*.xls, .xlsx*", _ Title:="Select data file for Monitoring Log") Set log = Workbooks.Open(ret) '----Copy to monitoring log NextRow = log.Sheets("Source").Cells(Rows.Count, "A").End(xlUp).Row + 1 a = NextRow i = 1 Do Until Sheets("Newly Distributed").Cells(i, 1) = "" log.Sheets("Source").Cells(a, 1).Value = Sheets("Newly Distributed").Cells(i, 1).Value log.Sheets("Source").Cells(a, 2).Value = Sheets("Newly Distributed").Cells(i, 2).Value log.Sheets("Source").Cells(a, 3).Value = Sheets("Newly Distributed").Cells(i, 3).Value log.Sheets("Source").Cells(a, 4).Value = Sheets("Newly Distributed").Cells(i, 4).Value log.Sheets("Source").Cells(a, 5).Value = Sheets("Newly Distributed").Cells(i, 5).Value log.Sheets("Source").Cells(a, 6).Value = Sheets("Newly Distributed").Cells(i, 6).Value log.Sheets("Source").Cells(a, 7).Value = Sheets("Newly Distributed").Cells(i, 7).Value log.Sheets("Source").Cells(a, 8).Value = Sheets("Newly Distributed").Cells(i, 8).Value log.Sheets("Source").Cells(a, 9).Value = Sheets("Newly Distributed").Cells(i, 9).Value log.Sheets("Source").Cells(a, 10).Value = Sheets("Newly Distributed").Cells(i, 10).Value log.Sheets("Source").Cells(a, 11).Value = Sheets("Newly Distributed").Cells(i, 11).Value log.Sheets("Source").Cells(a, 12).Value = Sheets("Newly Distributed").Cells(i, 12).Value log.Sheets("Source").Cells(a, 13).Value = Sheets("Newly Distributed").Cells(i, 13).Value log.Sheets("Source").Cells(a, 14).Value = Sheets("Newly Distributed").Cells(i, 14).Value log.Sheets("Source").Cells(a, 15).Value = Sheets("Newly Distributed").Cells(i, 15).Value log.Sheets("Source").Cells(a, 16).Value = Sheets("Newly Distributed").Cells(i, 16).Value log.Sheets("Source").Cells(a, 17).Value = Sheets("Newly Distributed").Cells(i, 17).Value log.Sheets("Source").Cells(a, 18).Value = Sheets("Newly Distributed").Cells(i, 18).Value log.Sheets("Source").Cells(a, 19).Value = Sheets("Newly Distributed").Cells(i, 19).Value log.Sheets("Source").Cells(a, 20).Value = Sheets("Newly Distributed").Cells(i, 20).Value log.Sheets("Source").Cells(a, 21).Value = Sheets("Newly Distributed").Cells(i, 21).Value log.Sheets("Source").Cells(a, 22).Value = Sheets("Newly Distributed").Cells(i, 22).Value log.Sheets("Source").Cells(a, 23).Value = Sheets("Newly Distributed").Cells(i, 23).Value log.Sheets("Source").Cells(a, 24).Value = Sheets("Newly Distributed").Cells(i, 24).Value log.Sheets("Source").Cells(a, 25).Value = Sheets("Newly Distributed").Cells(i, 25).Value log.Sheets("Source").Cells(a, 26).Value = Sheets("Newly Distributed").Cells(i, 26).Value log.Sheets("Source").Cells(a, 27).Value = Sheets("Newly Distributed").Cells(i, 27).Value log.Sheets("Source").Cells(a, 28).Value = Sheets("Newly Distributed").Cells(i, 28).Value log.Sheets("Source").Cells(a, 29).Value = Sheets("Newly Distributed").Cells(i, 29).Value log.Sheets("Source").Cells(a, 30).Value = Sheets("Newly Distributed").Cells(i, 30).Value log.Sheets("Source").Cells(a, 31).Value = Sheets("Newly Distributed").Cells(i, 31).Value log.Sheets("Source").Cells(a, 32).Value = Sheets("Newly Distributed").Cells(i, 32).Value log.Sheets("Source").Cells(a, 33).Value = Sheets("Newly Distributed").Cells(i, 33).Value log.Sheets("Source").Cells(a, 34).Value = Sheets("Newly Distributed").Cells(i, 34).Value log.Sheets("Source").Cells(a, 36).Value = Sheets("Newly Distributed").Cells(i, 39).Value i = i + 1 a = a + 1 Loop End Sub 

这是我在评论中提到的
注意:将来,您可以使用for循环来遍历列索引。

 Option Explicit Dim WB1 As Workbook Dim ws1 As Worksheet Private Sub copylog3() Dim lRow As Long Dim NextRow As Long, a As Long Dim i As Integer Dim ret Dim log As Workbook Set WB1 = ThisWorkbook Set ws1 = WB1.Worksheets("Newly Distributed") lRow = Sheets("Macro Template").Cells(Rows.Count, "A").End(xlUp).Row + 1 Range("A7:AM" & lRow).Copy ws1.Range("A1").PasteSpecial xlPasteValues ret = Application.GetOpenFilename(FileFilter:="Excel Workbooks (*.xls, .xlsx*),*.xls, .xlsx*", _ Title:="Select data file for Monitoring Log") Set log = Workbooks.Open(ret) '----Copy to monitoring log NextRow = log.Sheets("Source").Cells(Rows.Count, "A").End(xlUp).Row + 1 a = NextRow i = 1 Do Until ws1.Cells(i, 1) = "" log.Sheets("Source").Cells(a, 1).Value = ws1.Cells(i, 1).Value log.Sheets("Source").Cells(a, 2).Value = ws1.Cells(i, 2).Value log.Sheets("Source").Cells(a, 3).Value = ws1.Cells(i, 3).Value log.Sheets("Source").Cells(a, 4).Value = ws1.Cells(i, 4).Value log.Sheets("Source").Cells(a, 5).Value = ws1.Cells(i, 5).Value log.Sheets("Source").Cells(a, 6).Value = ws1.Cells(i, 6).Value log.Sheets("Source").Cells(a, 7).Value = ws1.Cells(i, 7).Value log.Sheets("Source").Cells(a, 8).Value = ws1.Cells(i, 8).Value log.Sheets("Source").Cells(a, 9).Value = ws1.Cells(i, 9).Value log.Sheets("Source").Cells(a, 10).Value = ws1.Cells(i, 10).Value log.Sheets("Source").Cells(a, 11).Value = ws1.Cells(i, 11).Value log.Sheets("Source").Cells(a, 12).Value = ws1.Cells(i, 12).Value log.Sheets("Source").Cells(a, 13).Value = ws1.Cells(i, 13).Value log.Sheets("Source").Cells(a, 14).Value = ws1.Cells(i, 14).Value log.Sheets("Source").Cells(a, 15).Value = ws1.Cells(i, 15).Value log.Sheets("Source").Cells(a, 16).Value = ws1.Cells(i, 16).Value log.Sheets("Source").Cells(a, 17).Value = ws1.Cells(i, 17).Value log.Sheets("Source").Cells(a, 18).Value = ws1.Cells(i, 18).Value log.Sheets("Source").Cells(a, 19).Value = ws1.Cells(i, 19).Value log.Sheets("Source").Cells(a, 20).Value = ws1.Cells(i, 20).Value log.Sheets("Source").Cells(a, 21).Value = ws1.Cells(i, 21).Value log.Sheets("Source").Cells(a, 22).Value = ws1.Cells(i, 22).Value log.Sheets("Source").Cells(a, 23).Value = ws1.Cells(i, 23).Value log.Sheets("Source").Cells(a, 24).Value = ws1.Cells(i, 24).Value log.Sheets("Source").Cells(a, 25).Value = ws1.Cells(i, 25).Value log.Sheets("Source").Cells(a, 26).Value = ws1.Cells(i, 26).Value log.Sheets("Source").Cells(a, 27).Value = ws1.Cells(i, 27).Value log.Sheets("Source").Cells(a, 28).Value = ws1.Cells(i, 28).Value log.Sheets("Source").Cells(a, 29).Value = ws1.Cells(i, 29).Value log.Sheets("Source").Cells(a, 30).Value = ws1.Cells(i, 30).Value log.Sheets("Source").Cells(a, 31).Value = ws1.Cells(i, 31).Value log.Sheets("Source").Cells(a, 32).Value = ws1.Cells(i, 32).Value log.Sheets("Source").Cells(a, 33).Value = ws1.Cells(i, 33).Value log.Sheets("Source").Cells(a, 34).Value = ws1.Cells(i, 34).Value log.Sheets("Source").Cells(a, 36).Value = ws1.Cells(i, 39).Value i = i + 1 a = a + 1 Loop End Sub