Excel 从包含隐藏行的外部工作表复制一组数据
因此,我想从外部工作表(源)复制一组外部数据,但源有一个过滤器,并隐藏了一些行。现在我希望它能复制所有的数据,包括隐藏的数据。下面是我的代码,其中“ROCV”是内部目标表,“PROJECT DETAIL”是外部数据源: (顺便说一句,我是第一次来这里,也是一个非常业余的VBA编码器,所以请耐心听我说:D)Excel 从包含隐藏行的外部工作表复制一组数据,excel,vba,Excel,Vba,因此,我想从外部工作表(源)复制一组外部数据,但源有一个过滤器,并隐藏了一些行。现在我希望它能复制所有的数据,包括隐藏的数据。下面是我的代码,其中“ROCV”是内部目标表,“PROJECT DETAIL”是外部数据源: (顺便说一句,我是第一次来这里,也是一个非常业余的VBA编码器,所以请耐心听我说:D) 使用ShowAllData Sub test() Dim wb1 As Workbook, wb2 As Workbook Dim Ret1, Ret2 Dim Ws
使用ShowAllData
Sub test()
Dim wb1 As Workbook, wb2 As Workbook
Dim Ret1, Ret2
Dim Ws As Worksheet
Dim vDB As Variant
Set wb1 = ActiveWorkbook
'~~> Get the File
Ret1 = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", _
, "Please select file")
If Ret1 = False Then Exit Sub
Set wb2 = Workbooks.Open(Ret1, UpdateLinks:=False)
Set Ws = wb2.Sheets("PROJECT DETAIL")
If Ws.FilterMode Then
Ws.ShowAllData
End If
'** Receives values into a two-dimensional array, and assigns the values of the array back to the target worksheet.
vDB = Ws.Range("a7").CurrentRegion
wb1.Worksheets("ROCV").Range("A7").Resize(UBound(vDB, 1), UBound(vDB, 2)) = vDB
'Ws.Range("a7").CurrentRegion.Copy Destination:=wb1.Worksheets("ROCV").Range("A7")
'wb2.Sheets("PROJECT DETAIL").Range("a7").CurrentRegion.Copy Destination:=wb1.Worksheets("ROCV").Range("A7")
wb2.Close SaveChanges:=False
Set wb2 = Nothing
Set wb1 = Nothing
End Sub
使用ShowAllData
Sub test()
Dim wb1 As Workbook, wb2 As Workbook
Dim Ret1, Ret2
Dim Ws As Worksheet
Dim vDB As Variant
Set wb1 = ActiveWorkbook
'~~> Get the File
Ret1 = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", _
, "Please select file")
If Ret1 = False Then Exit Sub
Set wb2 = Workbooks.Open(Ret1, UpdateLinks:=False)
Set Ws = wb2.Sheets("PROJECT DETAIL")
If Ws.FilterMode Then
Ws.ShowAllData
End If
'** Receives values into a two-dimensional array, and assigns the values of the array back to the target worksheet.
vDB = Ws.Range("a7").CurrentRegion
wb1.Worksheets("ROCV").Range("A7").Resize(UBound(vDB, 1), UBound(vDB, 2)) = vDB
'Ws.Range("a7").CurrentRegion.Copy Destination:=wb1.Worksheets("ROCV").Range("A7")
'wb2.Sheets("PROJECT DETAIL").Range("a7").CurrentRegion.Copy Destination:=wb1.Worksheets("ROCV").Range("A7")
wb2.Close SaveChanges:=False
Set wb2 = Nothing
Set wb1 = Nothing
End Sub
谢谢你,李迪!这工作这么好,我很惊讶!除了其中一个变化。如下所示,“set wb2”字符串有一个“updatelinks”属性,用于在打开文件时禁用链接更新请求功能。然而,我认为随着您添加了“Set WS”,它现在要求找到公式的链接位置。我可以简单地取消i,但我仍然希望在宏运行时将其完全禁用。您能再帮我一次吗我再次感谢你
Set wb2=Workbooks.Open(Ret1,UpdateLinks:=False)Set Ws=wb2.Sheets(“项目详细信息”)
现在我知道了,它应该在这个部分的某个地方有一个“粘贴为值”,但我似乎不知道正确的代码在哪里,是什么。显然,它复制的一些隐藏行中有外部链接源,应该忽略这些链接源。”Ws.Range(“a7”).CurrentRegion.Copy Destination:=wb1.Worksheets(“ROCV”).Range(“a7”)”@BoyDespasito,如果您试图检索一个值,则可以方便地使用数组。更正了答案。谢谢你,李迪!这工作这么好,我很惊讶!除了其中一个变化。如下所示,“set wb2”字符串有一个“updatelinks”属性,用于在打开文件时禁用链接更新请求功能。然而,我认为随着您添加了“Set WS”,它现在要求找到公式的链接位置。我可以简单地取消i,但我仍然希望在宏运行时将其完全禁用。您能再帮我一次吗我再次感谢你Set wb2=Workbooks.Open(Ret1,UpdateLinks:=False)Set Ws=wb2.Sheets(“项目详细信息”)
现在我知道了,它应该在这个部分的某个地方有一个“粘贴为值”,但我似乎不知道正确的代码在哪里,是什么。显然,它复制的一些隐藏行中有外部链接源,应该忽略这些链接源。”Ws.Range(“a7”).CurrentRegion.Copy Destination:=wb1.Worksheets(“ROCV”).Range(“a7”)”@BoyDespasito,如果您试图检索一个值,则可以方便地使用数组。更正了答案。