我有一个代码,我用它来复制另一个工作簿中的整个工作表,我要复制的那个工作表有隐藏的列,这些列也是用我目前正在使用的代码复制的。
所以我想复制一下它的查看方式。没有隐藏的列等等。
这是我目前的代码。
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 :(得分:0)
您必须使用Range.Areas property的Range.SpecialCells method(xlCellTypeVisible 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。