我知道已经有一些人遇到了这个问题,但他们的解决方案并没有帮助我。我是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
答案 0 :(得分:0)
该文件的数据验证为corrupt(下拉列表) - 删除数据验证或修复
修复文件后,下面的代码将复制数据,而不会多次打开目标文件。它是AutoFilters
列BK (63)
中空值的当前工作表,并将所有可见行(从列BC to BK
复制到新文件的末尾(从列{{中的第一个未使用的单元格开始) 1}})
A