我正在研究一个宏,它的功能之一是从列表中打开源工作簿,并将每个Excel工作表(ListObject)中包含的信息复制到单个目标工作簿中。
源表中包含链接和公式,这很麻烦,因为这样复制时它们会中断:
source.Sheets("Sheet1").ListObjects("Table1").Range.Copy _
Destination:=target.Sheets("Sheet1").Range("A1")
我可以在复制表之前先取消链接表,然后关闭它,但我希望有一种更干净的解决方案来移动此数据:
Dim source As Workbook
Dim target As Workbook
source.Sheets("Sheet1").ListObjects("Table1").Unlink
source.Sheets("Sheet1").ListObjects("Table1").Range.Copy _
Destination:=target.Sheets("Sheet1").Range("A1")
source.Close savechanges:=False
或者,
source.Sheets("Sheet1").ListObjects("Table1").Range.Copy
target.Sheets("Sheet1").Range("A1").PasteSpecial xlPasteValues
复制值,但丢失表对象。
在没有链接的情况下,是否可以将这些数据作为表格移动?如果可能的话,我希望避免选择或激活任何内容,因为这将在许多源文件上进行迭代。我也对替代方法(在数组中提到一个注释)持开放态度。