在某些情况下,我一直试图将数据从封闭表移到打开表,但它对我来说并不起作用。我需要逐行检查并仅复制满足条件的行。你能帮我看看问题并解决它吗?很有责任
Private Sub CommandButton1_Click()
Dim directory As String, fileName As String, sheet As Worksheet, total As Integer, i As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
directory = "C:\Work\"
fileName = Dir(directory & "*.xlsx??")
Do While fileName <> ""
Workbooks.Open (directory & fileName)
For i = 0 To 278
Workbooks(fileName).Worksheets(sheet.Name).Range("a1:a3").Copy
Next i
' For Each sheet In Workbooks(fileName).Worksheets
' total = Workbooks("import-sheets.xlsm").Worksheets.Count
' Workbooks(fileName).Worksheets(sheet.Name).Copy _
' after:=Workbooks("import-sheets.xlsm").Worksheets(total)
' Next sheet
Workbooks(fileName).Close
fileName = Dir()
Loop
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
答案 0 :(得分:0)
如果我没记错的话,Dir函数只会返回与查询匹配的第一个文件,所以你只提取一个文件名。
对于循环,您没有在语句中的任何位置使用控制变量“i”,因此每次迭代都要复制相同的范围(A1:A3)。你应该有类似的东西:
For i = 1 to 278
If Workbooks(fileName).Worksheets(1).Rows(i).Cells(i,1).Value > 10 then
Workbooks(fileName).Worksheets(1).Rows(i).Copy
Endif
next i
这将迭代工作簿中第一个工作表的前278行,并仅复制第一个单元格中的值大于10的行。