Shpux » 17.08.2007 (Пт) 3:03
Genyaa
Ей богу не понимаю смысла подобных ограничений, ну да ладно.
Я пошел чудовищным путем но все же как вариант может кому пригодится: я эту функцию (ExecuteExcel4Macro) запихал во внешнюю dll-библиотеку (с помощью Delphi), потом подключил ее к Ехелю и все заработало. Правда пришлось помучаться с типами переменных, я сам не ахти какой программист но такое ощущение что у Delphi и Excel(VBA) совпадают только Integer и Double. Например при попытке вернуть из библиотеки (созданной в Delphi) значение типа String, Excel без объяснения причин вырубается.
KL
Использовать SUB конечно можно, но:
Попытаюсь вкратце обрисовать суть задачи:
Есть некоторое (неопределенное) количество файлов-источников Excel с абсолютно одинаковой структурой, есть один результирующий файл-приемник с такой-же структурой, но файлы источники содержат в себе сложные теплотехнические расчеты (например за разные периоды), а значения результирующего файла должны собираться (суммированием, среднеарифметическим, средневзвешенным, и т.п.).
Причем подразумевается постояное развитие и видоизменение расчетов.
Какова была моя мысль:
Исходные данные для расчета значения конкретной ячейки - массив адресов исходных файлов, принцип накопления (суммированием, среднеарифметическим, средневзвешенным, и т.п.), ссылка на параметр взвешивания.
Макрос - ФУНКЦИЯ вычисляет собственное местоположение (адрес ячейки) опрашивает ячейки файлов-источников с таким же адресом, рассчитывает их и возвращает нужное значение в ячейку результирующего файла.
Таким образом я могу быстро сформировать сам результирующий файл (банальным протягиванием), легко менять файлы-источники (и их количество), и главное - это может сделать любой пользователь независимо от знаний VBA.
Примечание: Сводные таблицы не подходят в принципе из-за неопределенности источников и относительно сложных алгоритмов определения результирующего значения.
Если существует какое-либо другое направление при решении этой задачи - буду очень признателен.
P.S. Прошу прошения если не смог доступно объяснить.