Excel 将筛选的数据复制到其他工作簿

Excel 将筛选的数据复制到其他工作簿,excel,vba,Excel,Vba,我正在尝试将筛选后的数据复制到另一个工作簿,但它给了我运行时错误“1004” Sub DS() ' ' DS Macro ' Dim wb As Workbook Set wb = Workbooks.Open("H:\L\Roy\H AND E\2020\SAP - ZPSD02_template2\") ' 'Selection.AutoFilter Worksheets("ST TO ST").Range("$A$1:$O$1").AutoFilter F

我正在尝试将筛选后的数据复制到另一个工作簿,但它给了我运行时错误“1004”

Sub DS()
'
' DS Macro
'
    Dim wb As Workbook

    Set wb = Workbooks.Open("H:\L\Roy\H AND E\2020\SAP - ZPSD02_template2\")
'
    'Selection.AutoFilter
    Worksheets("ST TO ST").Range("$A$1:$O$1").AutoFilter Field:=12, Criteria1:="PENDING"
    lastRow = Worksheets("ST TO ST").Range("J" & Worksheets("ST TO ST").Rows.Count).End(xlUp).Row
    'ActiveWindow.SmallScroll Down:=-12
    Worksheets("ST TO ST").Range("$A$1:$O$1").AutoFilter Field:=10, Criteria1:="U3R", Operator:=xlOr, Criteria2:="U2R"
    Worksheets("ST TO ST").Range("J2:J" & lastRow).SpecialCells(xlCellTypeVisible).Copy _
                                 Destination:=wb.Sheets("Sheet1").Range("A1")
    Worksheets("ST TO ST").Range("C2:C" & lastRow).SpecialCells(xlCellTypeVisible).Copy _
                                 Destination:=wb.Sheets("Sheet1").Range("B1")
    Worksheets("ST TO ST").Range("D2:D" & lastRow).SpecialCells(xlCellTypeVisible).Copy _
                                 Destination:=wb.Sheets("Sheet1").Range("E1")
    Worksheets("ST TO ST").Range("H2:H" & lastRow).SpecialCells(xlCellTypeVisible).Copy _
                                 Destination:=wb.Sheets("Sheet1").Range("F1")
End Sub

请注意,工作簿路径指向文件夹,您需要将其指向文件

编辑:如您评论中所述

targetWorkbookPath=“H:\L\Roy\H和E\2020\SAP-ZPSD02\u template2.xlsx”
(或xlsm)

检查代码注释,并根据需要进行调整

编辑2:采用您在编辑中添加的路径,并将其合并到代码中

代码:

Sub DS()

    Dim sourceWorkook As Workbook
    Dim targetWorkbook As Workbook
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet

    Dim sourceWorkbookPath As String
    Dim targetWorkbookPath As String
    Dim lastRow As Long


    ' Define workbooks paths
    sourceWorkbookPath = "H:\L\Roy\RT\Transfers\Transfers 2020 - Roy.xlsm"
    targetWorkbookPath = "H:\L\Roy\H and E\2020\SAP - ZPSD02_template2.xlsx"

    ' Set a reference to the target Workbook and sheets
    Set sourceWorkbook = Workbooks.Open(sourceWorkbookPath)
    Set targetWorkbook = Workbooks.Open(targetWorkbookPath)

    ' definr worksheet's names for each workbook
    Set sourceSheet = sourceWorkbook.Worksheets("ST TO ST")
    Set targetSheet = targetWorkbook.Worksheets("Sheet1")

    With sourceSheet

        ' Get last row
        lastRow = .Range("J" & .Rows.Count).End(xlUp).Row

        .Range("A1:O1").AutoFilter Field:=12, Criteria1:="PENDING"
        .Range("A1:O1").AutoFilter Field:=10, Criteria1:="U3R", Operator:=xlOr, Criteria2:="U2R"

        .Range("J2:J" & lastRow).SpecialCells(xlCellTypeVisible).Copy _
                                     Destination:=targetSheet.Range("A1")
        .Range("C2:C" & lastRow).SpecialCells(xlCellTypeVisible).Copy _
                                     Destination:=targetSheet.Range("B1")
        .Range("D2:D" & lastRow).SpecialCells(xlCellTypeVisible).Copy _
                                     Destination:=targetSheet.Range("E1")
        .Range("H2:H" & lastRow).SpecialCells(xlCellTypeVisible).Copy _
                                     Destination:=targetSheet.Range("F1")
    End With
End Sub

让我知道它是否有效

哪一行抛出了错误,完整消息是什么?您的
wb
文件路径对我来说无效您的
工作簿。Open
行有完整路径,但末尾没有文件名。您希望它如何知道要打开哪个文件?@braX结束名是文件名。如果
SAP-ZPSD02_template2
是文件名,请删除结束处的反斜杠,并为其提供正确的扩展名。(.xls、.xlsx、.xlsm等)Hi@RicardoDiaz它在“Selection Autofilter”(选择自动筛选)之后的行中给我运行时错误“9”,如果您尚未设置筛选,将给您带来麻烦。我来调整一下。见编辑2。您必须确保工作表的名称正确hi@RicardoDiaz它在setsourcesheet行中给了我运行时错误'9'。另外,SetSourceWorkbook缺少一个'b',我已经更新了代码。很抱歉输入错误。我没有那些作业本,所以无法测试。