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

时间:2015-06-23 01:19:15

标签: excel vba excel-vba

我被困在这个代码块中,它将工作表(" Newly Distributed")从另一个工作簿复制到工作表的最后一行(" Source")。错误是运行时错误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

1 个答案:

答案 0 :(得分:1)

这是我在评论中提到的 注意:将来,您可以使用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