VBA将数据从具有条件的已关闭工作簿中移动到打开的工作簿中

时间:2017-05-23 12:29:39

标签: vba excel-vba excel

在某些情况下,我一直试图将数据从封闭表移到打开表,但它对我来说并不起作用。我需要逐行检查并仅复制满足条件的行。你能帮我看看问题并解决它吗?很有责任

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

1 个答案:

答案 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的行。