Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将一个工作表中的所有筛选数据复制到新工作簿中_Vba_Excel - Fatal编程技术网

Vba 将一个工作表中的所有筛选数据复制到新工作簿中

Vba 将一个工作表中的所有筛选数据复制到新工作簿中,vba,excel,Vba,Excel,我很难找到一个可靠的方法将一个工作表中的可见单元格复制到新工作簿中。我的初始工作簿已被筛选。大致如下: Sub RangeToNew() Dim newBook as Workbook Set newBook = Workbooks.Add ThisWorkbook.Worksheets("worksheet").SpecialCells(xlCellTypeVisible).Copy _ Before:=newBook.Worksheets(1)

我很难找到一个可靠的方法将一个工作表中的可见单元格复制到新工作簿中。我的初始工作簿已被筛选。大致如下:

Sub RangeToNew()

    Dim newBook as Workbook
    Set newBook = Workbooks.Add

    ThisWorkbook.Worksheets("worksheet").SpecialCells(xlCellTypeVisible).Copy _
        Before:=newBook.Worksheets(1)

End Sub

这不起作用。

看起来需要先将SpecialCells范围设置为范围对象,然后再进行复制。试试这个:

Sub rangeToNew_Try2()
    Dim newBook As Excel.Workbook
    Dim rng As Excel.Range

    Set newBook = Workbooks.Add

    Set rng = ThisWorkbook.Worksheets("Sheet1").Cells.SpecialCells(xlCellTypeVisible)

    rng.Copy newBook.Worksheets("Sheet1").Range("A1")
End Sub

这很好,看起来好像能用。有一件事是为了我的案子才停止。我使用的是Office2007,原始文件是.xlsm。我发现错误:1004 error Description=Excel无法将工作表插入目标工作簿,因为它包含的行和列少于源工作簿。若要将数据移动或复制到目标工作簿,您可以选择数据,然后使用“复制”和“粘贴”命令将其插入到另一个工作簿的工作表中。我的第一本书中有>100万行,而创建的第一本书中只有65k行。