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

时间:2016-06-07 20:56:29

标签: excel excel-vba copy visible vba

我有一个代码,我用它来复制另一个工作簿中的整个工作表,我要复制的那个工作表有隐藏的列,这些列也是用我目前正在使用的代码复制的。

所以我想复制一下它的查看方式。没有隐藏的列等等。

这是我目前的代码。

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

1 个答案:

答案 0 :(得分:0)

您必须使用Range.Areas propertyRange.SpecialCells methodxlCellTypeVisible property)。

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可能会进一步分为不连续的范围。需要更多的预代数数学来向右和向右偏移。

我不确定您为何决定使用Workbook Objects而不是Worksheet Objects