У меня есть документ 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]]
UPDATE :
Я просто пытался ссылаться на данные в таблице по листам и ячейкам, например, =Other_Sheet!A1
. Все та же проблема, ссылка волшебным образом превращается в =[source.xls]Other_Sheet!A1
.
ОБНОВЛЕНИЕ 2 :
Следующая попытка состояла в том, чтобы получить доступ к ячейкам на другом листе с помощью =INDIRECT("Other_Sheet!"&CELL("address"))
, но, похоже, это вызывает ошибку в Excel 2007. Все ячейки будут иметь одинаковое значение. Попробуйте сами :)
Я бы хотел, чтобы листы в целевом документе ссылались на таблицу в той же книге. Как бы я это сделал?
Я открыт для других решений, кроме VBA