复制整个工作表,因为它没有隐藏的行

我有一个代码,我用来从另一个工作簿复制整个工作表,我想要复制的工作表具有隐藏的列,这些列也与我目前使用的代码一起复制。

所以我想要复制的工作表完全如何查看。 没有隐藏的栏目等等。

这是我目前的代码。

Dim x As Workbook Dim y As Workbook Dim vals As Variant Set y = ThisWorkbook Sheets("Sheet3").UsedRange.Delete Set x = Workbooks.Open("http://blabla/download.xlsx") With x.Sheets("SME Tal").UsedRange y.Sheets("Sheet3").Range("A1").Resize( _ .Rows.Count, .Columns.Count) = .Value End With 

您必须使用Range.SpecialCells方法的Range.Areas属性 (使用xlCellTypeVisible属性 )。

 Dim x As Workbook, y As Workbook Dim vals As Variant Dim a As Long Set y = ThisWorkbook y.Sheets("Sheet3").UsedRange.Delete Set x = Workbooks.Open("http://blabla/download.xlsx") With x.Sheets("SME Tal").UsedRange.SpecialCells(xlCellTypeVisible) For a = 1 To .Areas.Count With .Areas(a) y.Sheets("Sheet3").Range("A1").Resize( _ .Rows.Count, .Columns.Count).Offset( _ 0, Application.CountA(y.Sheets("Sheet3").Rows(1))) = .Value End With Next a End With 

如果你有隐藏的行,那么.Areas可能被进一步分解成不连续的范围。 更多的预代数math将需要抵消下来,以及正确的。

我不知道为什么你决定使用工作簿对象而不是工作表对象 。