Excel 复制过滤信息
我想把两本不同的工作簿中的信息复制到第三本。下面的代码适用于B,但对于A,它只粘贴第一行信息 我将A的目标设置为源工作簿的另一个选项卡,结果成功了。然后,我将目标设置为一个新创建的工作簿,并且也开始工作 当我再次尝试使用我想要的工作簿时,它只粘贴第一行Excel 复制过滤信息,excel,vba,Excel,Vba,我想把两本不同的工作簿中的信息复制到第三本。下面的代码适用于B,但对于A,它只粘贴第一行信息 我将A的目标设置为源工作簿的另一个选项卡,结果成功了。然后,我将目标设置为一个新创建的工作簿,并且也开始工作 当我再次尝试使用我想要的工作簿时,它只粘贴第一行 'open file A Set W_Book = Workbooks.Open(Folder_Path & A_Rep) Sheets("A").Activate 'filter out information and
'open file A
Set W_Book = Workbooks.Open(Folder_Path & A_Rep)
Sheets("A").Activate
'filter out information and copy it
With ActiveSheet
.AutoFilterMode = False
.UsedRange.AutoFilter
.UsedRange.AutoFilter Field:=5, Criteria1:=Start_Date
.UsedRange.AutoFilter Field:=10, Criteria1:="AAA10"
.UsedRange.SpecialCells(xlCellTypeVisible).Copy
End With
'paste on the tracker and close the report
Windows("Tracker.xlsm").Activate
Sheets("Sheet A").Range("A1").PasteSpecial
W_Book.Close False
'open file B
Set W_Book = Workbooks.Open(Folder_Path & B_Rep)
'filter out information and copy it
With ActiveSheet
.AutoFilterMode = False
.UsedRange.AutoFilter
.UsedRange.AutoFilter Field:=7, Criteria1:="BBB10"
.UsedRange.AutoFilter Field:=24, Criteria1:="Done"
.UsedRange.SpecialCells(xlCellTypeVisible).Copy
End With
'paste on the tracker and close the report
Windows("Tracker.xlsm").Activate
Sheets("Sheet B").Range("A1").PasteSpecial
W_Book.Close False
出现这种情况是因为您在筛选数据时使用了ActiveSheet,但在打开工作簿B后,您没有指定要复制的工作表,请尝试下面的代码,它会给您带来更好的结果。我指定了要复制数据的第一个工作表,您可能需要修改它:
Sub foo()
Dim wbTracker As Workbook: Set wbTracker = Workbook("Tracker.xlsm")
'open file A
Set W_Book = Workbooks.Open(Folder_Path & A_Rep)
'filter out information and copy it
With W_Book.Sheets("A")
.AutoFilterMode = False
.UsedRange.AutoFilter
.UsedRange.AutoFilter Field:=5, Criteria1:=Start_Date
.UsedRange.AutoFilter Field:=10, Criteria1:="AAA10"
.UsedRange.SpecialCells(xlCellTypeVisible).Copy
End With
'paste on the tracker and close the report
wbTracker.Sheets("Sheet A").Range("A1").PasteSpecial
W_Book.Close False
'open file B
Set W_Book = Workbooks.Open(Folder_Path & B_Rep)
'filter out information and copy it
With W_Book.Sheets(1)
.AutoFilterMode = False
.UsedRange.AutoFilter
.UsedRange.AutoFilter Field:=7, Criteria1:="BBB10"
.UsedRange.AutoFilter Field:=24, Criteria1:="Done"
.UsedRange.SpecialCells(xlCellTypeVisible).Copy
End With
'paste on the tracker and close the report
wbTracker.Sheets("Sheet B").Range("A1").PasteSpecial
W_Book.Close False
End Sub
嗨,Xabier,谢谢你的帮助。我尝试了上面的代码,但不幸的是,我得到了相同的结果。它只粘贴第一行,不粘贴其他行。问题在于选项卡A。在这一点上我没有任何意义。当您单步执行代码时,开始日期的值是多少?开始日期定义为用户通过InputBox输入的日期。实际上,我只是通过将其定义为字符串解决了这个问题,但是我不确定为什么这很重要,因为它确实在另一个工作簿中正确地进行了筛选和粘贴…@Dadaz应用筛选器可能是错误地设置了日期格式,而将其定义为字符串则格式保持输入状态。。很高兴你让它工作了..: