2016-06-07 6 views
1

У меня есть код, который я использую, чтобы скопировать весь лист из другой книги. Этот лист, который я хочу скопировать, содержит скрытые столбцы, которые также копируются с этим кодом I Используется в данный момент.Скопируйте весь лист, как он просматривается, без скрытых строк

Так что я хочу скопировать лист именно так, как его просматривают. без скрытых столбцов и т. д.

Это код, который у меня есть на данный момент.

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 
+0

'SpecialCells (xlCellTypeVisible)' – findwindow

ответ

0

Вы должны работать с Range.Areas property в Range.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 

. Если бы у вас были скрытые строки, они могли быть разбиты на бессознательные диапазоны. Для смещения как правого, так и правого будут необходимы дополнительные математические представления перед алгеброй.

Я не уверен, почему вы решили работать с Workbook Objects, а не Worksheet Objects.