将行从一个工作表复制并粘贴到另一个工作表VBA

时间:2018-05-02 18:03:31

标签: excel vba excel-vba iteration

我知道已经有一些人遇到了这个问题,但他们的解决方案并没有帮助我。我是VBA的新手,如果相应的第一个单元格对于另一个文件不是空的,我想复制一行,并且只要数据是迭代的。

到目前为止一切顺利。我的代码第一次运行并实际工作(一行)。但是宏不会再次打开文件并吐出错误。如果我想手动打开目标文件,它会说:"删除功能:来自/xl/worksheets/sheet2.xml部分的数据验证" (我认为这就是它不再进一步迭代的原因)。你知道我能做什么吗?

Sub transferData()

Dim LastRow As Long, i As Integer, erow As Long

LastRow = ActiveSheet.Range("BC" & Rows.Count).End(xlUp).Row

For i = 3 To LastRow

If IsEmpty(Cells(i, 63).Value) = False Then
Range(Cells(i, 55), Cells(i, 63)).Select
Selection.Copy

Workbooks.Open Filename:="PATH.xlsx"
Worksheets("NewProjects").Select
erow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row


ActiveSheet.Cells(erow, 1).Select
ActiveSheet.PasteSpecial
ActiveSheet.Sort.SortFields.Clear
ActiveWorkbook.Save
ActiveWorkbook.Close SaveChanges:=False
Application.CutCopyMode = False
End If

Next i
End Sub

1 个答案:

答案 0 :(得分:0)

该文件的数据验证为corrupt(下拉列表) - 删除数据验证或修复

修复文件后,下面的代码将复制数据,而不会多次打开目标文件。它是AutoFiltersBK (63)中空值的当前工作表,并将所有可见行(从列BC to BK复制到新文件的末尾(从列{{中的第一个未使用的单元格开始) 1}})

A