复制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