简体   繁体   中英

copy excel sheets with table references

I have an Excel 2007 document with multiple sheets, let's call it source.xls . I'd like to copy some of the sheets into all Excel documents within a folder, say C:\\some_folder .

I figured how to loop over a directory:

Dim file As String
file = dir("C:\some_folder\*.xlsx")
Do While file <> ""

   Rem do_stuff

   file = dir()
Loop

And how to copy sheets between workbooks:

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

So far so good.

Now one of the sheets contains a table with external data from an SQL Server. Copying it works well.

Another sheet references data in that table as Table_MYSERVER_MYDB[[row][col]] . When I copy it, the references are automatically turned into source.xls!Table_MYSERVER_MYDB[[row][col]]

UPDATE : I just tried to reference the data in the table by sheet and cell, eg =Other_Sheet!A1 . Still the same problem, the reference magically turns into =[source.xls]Other_Sheet!A1 .

UPDATE 2 : The next try was to access the cells in the other sheet with =INDIRECT("Other_Sheet!"&CELL("address")) , but that seems to trigger a bug in Excel 2007. All cells will show the same value. Try it for yourself :)

I'd like the sheets in the target document to reference the table in the same workbook. How would I do that?

I'm open for other solutions than VBA too

I just figured it out myself:

My last desperate attempt was using Search&Replace over all formulas to remove [source.xls].

That's when a workmate suggested using:

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

Exactly what I was looking for!

Try this:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM