Макросы в функциях эксель

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Макросы в функциях эксель

Сообщение Алексей »

В общем есть сформированный функциями отчет в эксель.
Есть желание подбить итоги которые в эксель вызываются по меню "Данные - итоги".

Подобных функций не нашел и решил оформить это макросом.
Но по скольку заранее не знаю какое кол-во строк в отчёте будет - то и макрос соответственно не постоянен и должен формироваться на ходу.

Вопрос: есть ли возможность не загружать макрос из файла или запускать уже описанный в шаблоне а напрямую из ВИПа командами передать построчно макрос и выполнить его?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Файл с макросом нужно динамически построчно формировать из VIP-а.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

или запускать макрос с параметром. Еще вариант - в какой нибудь скрытой(белой) ячейке писать требуемое число. Все таки в шаблоне держать макрос проще.
ilshat
Местный житель
Сообщения: 222
Зарегистрирован: 04 июн 2008, 14:35
Откуда: Стерлитамак
Контактная информация:

Re: Макросы в функциях эксель

Сообщение ilshat »

Алексей писал(а): Но по скольку заранее не знаю какое кол-во строк в отчёте будет
Давно не писал макросов, но помнится есть там возможность определить границу ареала данных т.е. где ж они кончаются на листе.
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Макросы в функциях эксель

Сообщение Den »

ilshat писал(а):
Алексей писал(а): Но по скольку заранее не знаю какое кол-во строк в отчёте будет
Давно не писал макросов, но помнится есть там возможность определить границу ареала данных т.е. где ж они кончаются на листе.
Определить можно с помощью GetUsedRange, но это когда уже выгружены данные..
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

спсб. сделал через файл всё-таки. а по границе, да тупо вбил 65000 :) не промахнусь :)
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Для справки. Может поможет :)
Большинство xl-функций в случае некорректного указания границ используют GetUserRange для определения границ. Пример:

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

function  tExporter.InsertRange;
begin
  Result := false;
  if (not IsAllValid) then Exit;
  try
    if (RowU<=0) or (ColL<=0) or (RowD<=0) or (ColR<=0) then
      WSheet.UsedRange.Insert(Shift := lShift)
    else
      WSheet.Range[WSheet.Cells[RowU, ColL], WSheet.Cells[RowD, ColR]].Insert(Shift := lShift);
    LastError := cgxlOk;  Result := True;
  except
    LogOnExcept('InsertRange');
    LastError := cgxlErrInsertRange;
  end
end;
Ответить