Страница 1 из 1

Не могу заставить работать функцию xlGetRangeByName

Добавлено: 23 окт 2008, 11:05
Ренат
Доброго времени суток.

Необходимо в шаблон, на лист "list1" вывести данные в поименованную ячейку "YY".

Код: Выделить всё

 if not xlSetActiveSheetByName('list1') { 
           Message('Ошибка структуры шаблона');
           exit;
        };
xlGetRangeByName('YY',c1,r1,c2,r2);
xlSetCellStringValue('ё моё',c1,r1,c2,r2);
       Message('c1='+string(c1)+char(13)+char(10)+
               'r1='+string(r1)+char(13)+char(10)+
               'c2='+string(c2)+char(13)+char(10)+
               'r2='+string(r2)+char(13)+char(10));
Функция xlGetRangeByName возвращает какой то нереальный результат (с1=1239856, r1=0, c2=49153, c2=1881904) . Причем возвращает False. Но данные пишет в эту ячейку и ту что над ней.
Что я делаю неправильно?

Добавлено: 23 окт 2008, 12:00
m0p3e
Насколько я помню функция с ошибкой. RangeByName и RangeByNameInBook обе работали как InBook. В dll под OO я это правил. Более подробно уже не помню.
Создай excel.log в рабочей папке и посмотри что пишет.

Добавлено: 23 окт 2008, 12:26
Ренат
Вроде ничего и не пишет :-(

Добавлено: 23 окт 2008, 12:52
Ренат
Работает как RangeByNameInBook. Спасибо

Добавлено: 23 окт 2008, 13:53
m0p3e
Ренат писал(а):Работает как RangeByNameInBook. Спасибо
Вот в том то и дело. А если необходимо использовать область независимо от того на каком листе она находится, то засада.

Может к то в курсе, кто занимается excellib-ой в Галактике? Кому писать?

Добавлено: 23 окт 2008, 13:59
Ренат
У меня вообще не получилось создать область с одним именем на разных листах. Так что думаю достаточно и одной функции

Добавлено: 23 окт 2008, 14:57
m0p3e
Неа. Недостаточно.
Делал многолистовой отчет, где нужно было просуммировать ячейки с известным именем, но на каком листе они находились было неизвестно. Т.е. нужно было создать формулу
=SUMM('MyRange1';'MyRange2'; и т.д.)
Вот тут и нарвался.

Добавлено: 23 окт 2008, 15:32
Ренат
А я так функцию и вызываю

Код: Выделить всё

xlGetRangeByNameInBook('YY',c1,r1,c2,r2); 
т.е. без указания имени листа. Правда я на нем и нахожусь :grin:
Но в формуле конечно надо указывать полностью, с именем листа.