xlSetCellFormula проблемы с языками

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

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

Ответить
dp
Местный житель
Сообщения: 216
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Беларусь, Минск
Контактная информация:

xlSetCellFormula проблемы с языками

Сообщение dp »

Горе... Помоги нам кто чем может... :???:

На офисе стоят вперемешку офисы на английском языке и на русском.
И оказывается что формулы для экселя "языкозависимые"

т.е. "русский" эксел не понимает '=SUM()', а "английский" '=СУММ()'

:(

спрашивается - как можно определить "язык" экселя или как проссумировать диапазоны каким-либо способом не используя языкозависимые формулы...

суммировать в vip'e желательно не предлагать - потому как том что пишу это проблематично, да и пользователь должен иметь возможность откорретировать данные в отчете перед выводом на печать
dP
Hmyrii
Постоянный гость
Сообщения: 62
Зарегистрирован: 07 июн 2006, 08:23

Сообщение Hmyrii »

помоему самый логичный и правельный вариант решения это набрасать макрос которым будет реализована твоя функция суммы или какая либо другая ф-ция
уж VisualBasic на точно от язычной версии продукта не зависит
в данном случае я так полгаю из vip-а заполняется екселевский шаблон, вот и накидай в нем макрос, а пользователь потом сможет что то править если надо
homak
Постоянный обитатель
Сообщения: 144
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Красноярский Край
Контактная информация:

Сообщение homak »

может попробовать самому посчитать нужное значение в собственную переменную, а потом уже вывести её значение ... :smile:
dp
Местный житель
Сообщения: 216
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Беларусь, Минск
Контактная информация:

Сообщение dp »

Hmyrii
да не получится... потому как сумма должна изменяться с изменением значений в колонках...

или я не знаю как повесить макрос, чтобы он постоянно работал, отслуживая изменения на листе...хотя он наверное торрррмозить будет аж жуть
dP
Hmyrii
Постоянный гость
Сообщения: 62
Зарегистрирован: 07 июн 2006, 08:23

Сообщение Hmyrii »

да нет же все получится
в екселе есть ф-ции, куча разных и в том числе СУММ (или если англоязычный ексель то SUM)
так вот ты пишешь макрос который будет реализовывать еще одну ф-цию, например MyMultylanguageSumm(a,b) - где a и b входные параметры, то есть от куда по кудо суммировать ячйеки
и все, на этом писанина макроса заканчивается. таким образом у тебя в наборе будет еще одна ф-цию собственно говоря не чем не отличающаяся от стандартных
далее ты вызываешь эту ф-цию так же как и все стандартные, можешь из VIP-а, можешь потом при правке шаблона, вставить ее куда надо
при этом она как и стандартная сумма будет работать, то есть меняешь какую то ячейку из ее диапазон, и она сомо собой пересчитыавет
тормозить не будет, проверенно, приходилось жуткие формулы воять так как стандартными обойтись просто не удавалось
источников по визуал бейсику в инете навалом, так что дерзайте и думаю СЧАСТЬЕ НЕИЗБЕЖНО КАК ВОСХОД СОЛНЦА :smile:
dp
Местный житель
Сообщения: 216
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Беларусь, Минск
Контактная информация:

Сообщение dp »

Hmyrii
спасибо - буду пробывать
dP
Ksenia
Посетитель
Сообщения: 39
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Украина, Киев
Контактная информация:

Сообщение Ksenia »

Подниму еще раз темку. Проблема так и соталась на 8.1. Пишу и тестирую отчет под русский офис xlSetCellFormula('=СУММ , а у заказчика удалённого есть и англоязычный и русскоязычный офисы, т.е. решать броблему макросом? А нельзя ли в коде вычислить функцией какой используется офис и в зависимости от результата писать СУММ или SUM?
Учиться, учиться и еще раз учиться
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

Если Ofiice 2003 или выше, то лучше писать формулы на англицком, их любой офис поймет. http://www.tyumbit.ru/gal_forum/viewtopic.php?t=9236
Ksenia
Посетитель
Сообщения: 39
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Украина, Киев
Контактная информация:

Сообщение Ksenia »

спасибо! эту темку не отследила.
Учиться, учиться и еще раз учиться
Ответить