2011-02-03 154 views
3

我有一张带有多张表格的Excel 2007文档,我们称之为source.xls。我想将一些表单复制到文件夹内的所有Excel文档中,例如C:\some_folder将excel表格复制到表格中

我想出如何循环目录:

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]]

UPDATE: 我只是试图通过片材和细胞,例如参考在表中的数据=Other_Sheet!A1。仍然是同样的问题,参考文献奇迹般地变成=[source.xls]Other_Sheet!A1

更新2: 接下来的尝试是访问该细胞的另一片与=INDIRECT("Other_Sheet!"&CELL("address")),但似乎触发错误在Excel 2007中的所有单元格将显示相同的值。自己试试:)

我想要目标文档中的工作表参考同一工作簿中的表。我会怎么做?

我打开超过VBA其他解决方案过于

回答

1

我想通了自己:

我最后的绝望尝试使用搜索&替换在所有公式来移除[source.xls]。

这是当一个同事建议使用:

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

正是我一直在寻找!

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 
+0

虽然这可能有效,恐怕这不会很好地扩展。我必须将10张单元格中的数千个单元复制到几千个文档中...... – chris 2011-02-03 15:09:35

相关问题