使用表引用复制excel表

时间:2011-02-03 10:03:09

标签: excel vba excel-vba excel-2007

我有一个包含多个工作表的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]]。复制时,引用会自动转换为source.xls!Table_MYSERVER_MYDB[[row][col]]

更新: 我只是试图逐页和单元格引用数据,例如=Other_Sheet!A1。仍然是同样的问题,参考神奇地变成了=[source.xls]Other_Sheet!A1

更新2 : 下一次尝试是使用=INDIRECT("Other_Sheet!"&CELL("address"))访问另一个工作表中的单元格,但这似乎会触发Excel 2007中的错误。所有单元格都将显示相同的值。亲自试试:)

我希望目标文档中的工作表引用同一工作簿中的表。我该怎么做?

我也开放其他解决方案而不是VBA

2 个答案:

答案 0 :(得分:1)

我自己想出来了:

我最后一次绝望的尝试是使用搜索和替换所有公式来删除[source.xls]。

当工友建议使用时:

wb.ChangeLink Name:=source.xls NewName:=wb.Name Type:=xlExcelLinks

正是我在寻找的东西!

答案 1 :(得分:0)

试试这个:

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