复制excel表与表引用
我有一个多张工作表的Excel 2007文档,我们称之为source.xls
。 我想将一些表单复制到文件夹内的所有Excel文档中,比如C:\some_folder
。
我想如何遍历一个目录:
Dim file As String file = dir("C:\some_folder\*.xlsx") Do While file <> "" Rem do_stuff file = dir() Loop
以及如何在工作簿之间复制工作表:
For Each ws in ActiveWorkbook.Worksheets Dim wb as Workbook Set wb = Workbook.Open(file) ws.Copy , wb.sheets(w.sheets.Count) wb.Close SaveChanges:=True Next ws
到现在为止还挺好。
现在,其中一张表包含一个包含来自SQL Server的外部数据的表。 复制它效果很好。
另一个工作表将Table_MYSERVER_MYDB[[row][col]]
数据引用为Table_MYSERVER_MYDB[[row][col]]
。 当我复制它时,引用会自动变成source.xls!Table_MYSERVER_MYDB[[row][col]]
更新 :我只是试图通过表和单元格引用表中的数据,例如=Other_Sheet!A1
。 仍然是同样的问题,参考魔术变成=[source.xls]Other_Sheet!A1
。
更新2 :下一次尝试访问其他表中的单元格=INDIRECT("Other_Sheet!"&CELL("address"))
,但似乎触发Excel 2007中的错误。所有单元格将显示相同的值。 自己试试:)
我想要目标文档中的工作表参考同一工作簿中的表格。 我该怎么做?
我也开放其他解决scheme比VBA
我自己弄明白了:
我最后一次绝望的尝试是使用search和replace所有公式来删除[source.xls]。
那时,一位同事build议使用:
wb.ChangeLink Name:=source.xls NewName:=wb.Name Type:=xlExcelLinks
正是我在找什么!
尝试这个:
Sub CopyFormula() Dim R1,R2 As Range Set R1 = Workbooks("wb2.xls").Sheets(1).Range("A1") Set R2 = Workbooks("wb1.xls").Sheets(1).Range("A1") R1.Formula = R2.Formula End Sub