使用VBA仅将筛选单元格从一个excel复制并粘贴到另一个excel

使用VBA仅将筛选单元格从一个excel复制并粘贴到另一个excel,excel,vba,Excel,Vba,当我试图从一个excel文件复制过滤后的单元格并将其粘贴到另一个文件时,遇到了一个问题。我正在使用一个宏调用来获取数据,试图修复给定的代码。当我尝试复制未过滤的单元格时,它正在工作。只有当我尝试只复制可见单元格时才会出现问题。我想寻求帮助来解决这个问题 Private Sub CommandButton1_Click() Dim lrCD As Long Dim fNameAndPath As Variant Dim WB As Workbook Dim Sou

当我试图从一个excel文件复制过滤后的单元格并将其粘贴到另一个文件时,遇到了一个问题。我正在使用一个宏调用来获取数据,试图修复给定的代码。当我尝试复制未过滤的单元格时,它正在工作。只有当我尝试只复制可见单元格时才会出现问题。我想寻求帮助来解决这个问题

Private Sub CommandButton1_Click()

    Dim lrCD As Long
    Dim fNameAndPath As Variant
    Dim WB As Workbook
    Dim SourceWB As Workbook
    Dim WS As Worksheet
    Dim ASheet As Worksheet
    fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.xlsx), *.xlsx", Title:="Seleziona il file da aprire")

    'Sets the variables:
    Set WB = ActiveWorkbook
    Set ASheet = ActiveSheet
    Set SourceWB = Workbooks.Open(fNameAndPath)  'Modify to match

    'Copies each sheet of the SourceWB to the end of original wb:
    For Each WS In SourceWB.Worksheets
        WS.Copy after:=WB.Sheets(WB.Sheets.Count)
    Next WS

        SourceWB.Close savechanges:=False
        Set WS = Nothing
        Set SourceWB = Nothing

    WB.Activate
    ASheet.Select

    Set ASheet = Nothing
    Set WB = Nothing

    Application.EnableEvents = True
    lastrow = Worksheets(4).Cells(Rows.Count, 1).SpecialCells(xlCellTypeVisible).End(xlUp).Row


    For i = 3 To lastrow
        Worksheets(4).Cells(i, 16).SpecialCells(xlCellTypeVisible).Copy
        erow = Worksheets("CFF").Cells(Rows.Count, 1).SpecialCells(xlCellTypeVisible).End(xlUp).Row
        Worksheets(4).PasteSpecial xlPasteValues = Worksheets("CFF").Cells(erow + 1, 2)
        Worksheets(4).Cells(i, 16).SpecialCells(xlCellTypeVisible).Copy
        Worksheets(4).PasteSpecial xlPasteValues = Worksheets("CFF").Cells(erow + 1, 3)
        Worksheets(4).Cells(i, 15).SpecialCells(xlCellTypeVisible).Copy
        Worksheets(4).PasteSpecial xlPasteValues = Worksheets("CFF").Cells(erow + 1, 4)
        Worksheets(4).Cells(i, 12).SpecialCells(xlCellTypeVisible).Copy
        Worksheets(4).PasteSpecial xlPasteValues = Worksheets("CFF").Cells(erow + 1, 5)
        Worksheets(4).Cells(i, 13).SpecialCells(xlCellTypeVisible).Copy
        Worksheets(4).PasteSpecial xlPasteValues = Worksheets("CFF").Cells(erow + 1, 6)
        Worksheets(4).Cells(i, 18).SpecialCells(xlCellTypeVisible).Copy
        Worksheets(4).PasteSpecial xlPasteValues = Worksheets("CFF").Cells(erow + 1, 1)
    Next i

    Application.CutCopyMode = False

     Sheets(4).Select
     Application.DisplayAlerts = False
     ActiveWindow.SelectedSheets.Delete

     Sheets(2).Select           

End Sub

您的语法看起来不正确-
工作表(4)。粘贴特殊xlPasteValues=工作表(“CFF”)。单元格(erow+1,2)
无效。你到底遇到了什么问题?我有两个不同的excel文件,一个叫做“CFF”,我必须从另一个excel工作表中粘贴一些特定范围。另一个工作表(4)是一个过滤列表文件。因此,在这一点上,我无法复制我已经过滤过的可见单元格并将其粘贴到我的工作表(CFF)hi SJR,你能帮我吗?或者有没有人可以帮我。我真的需要解决这个紧急问题。你还没有描述你发布的代码的具体问题。网上有很多关于VBA和autofilter的资料。如前所述,您首先遇到一些语法问题。Hi SJR我的问题当我调用宏时,它会从我的桌面打开工作表,但无法复制并粘贴到我的设计工作表(CFF)上请不要告诉我错误。我发现了一个奇怪的问题。在看到你的建议后,我尝试对粘贴方法做一些小的更改,即使这里什么都没有。它是:工作表(4)。特殊单元格(xlCellTypeVisible)。单元格(i,19)。复制工作表(“CFF”)。单元格(erow+1,2)。粘贴特殊粘贴:=xlPasteValues