1

Тема: VBS: Обновление ссылок в файлах Excel

_    Здравствуйте, есть цепочка файлов Excel  1-й елемент цепочки -- файл исходных данных, 2-й елемент -- несколько файлов которые посредством ссылок (связей) Excel получают исходные данные из первого ел. и обрабатывают их, и 3-й елемент -- сводная таблица откуда заносятся итоги каждого файла.
     Задача - сделать так что бы данные вводились в 1-й елемент, и можно было сразу их посмотреть в 3-ем  без открывания-закрывания файлов (с целью обновления ссылок) всех файлов 2-го елемента.
     Я сделал автооткрывание-закрывание через VBS скрипт, а автообновление ссылок посредством макроса Ехсеl который обновляет ссылки при открытии.

     Мне кажется скрипт сделан как-то не так - тормоза жуткие, пожет кто чем подскажет можно ли его оптимизировать?

Листинг скрипта:

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open _ 
    ("E:\файл1.xls")
objExcel.DisplayAlerts = False ' чтобы не было вопросов 
objExcel.ActiveWorkbook.SaveAs "E:\файл1.xls" 
objWorkbook.close

....  -тоже самое N-раз для всех файлов

Set objWorkbook = objExcel.Workbooks.Open _ 
    ("E:\файлN.xls")
objExcel.DisplayAlerts = False ' чтобы не было вопросов 
objExcel.ActiveWorkbook.SaveAs "E:\файлN.xls" 
objWorkbook.close
objExcel.Quit

Ну и Ехсеl'а на всякий случай:

Private Sub Workbook_Open()
    ActiveWorkbook.UpdateLink Name:="E:\исходный файл.xls", _
        Type:=xlExcelLinks
End Sub

2

Re: VBS: Обновление ссылок в файлах Excel

Дайте хоть маааааленькую подсказку...:rolleyes::rolleyes::rolleyes:

3

Re: VBS: Обновление ссылок в файлах Excel

evil159 пишет:

...без открывания-закрывания файлов (с целью обновления ссылок) всех файлов 2-го елемента <...> сделал автооткрывание-закрывание через VBS скрипт...

Получается, что Вы всё равно открываете и закрываете файлы книг, но только в скрытом окне. Или Вам именно это и надо?

На форумах мне встречалась информация о том, что самый быстрый из возможных способов "добыть" данные из закрытой книги - это использование метода ExecuteExcel4Macro объекта Application (сам я использовать такой метод не пробовал).