|
Как выгрузить формулу из 1С в excel | ☑ | ||
---|---|---|---|---|
0
СантаМарина
25.07.14
✎
19:54
|
Всем доброго ночера!
Пишу такое: xl = Новый COMОбъект ("Excel.Application"); xl.Workbooks.Add(); //Добавляем новый документ xl.Visible=1; //Делаем его видимым .......... xl.Cells(НомерСтроки,25).Value = "=RC[-13]/RC[-17]*100"; //промежуточный расчет xl.Cells(НомерСтроки,26).Value = "ЕСЛИ(1=1;1;0)"; //промежуточный расчет Там, где +,-,/,* - нормально выгружается и пересчитывается, как только доходит до именованной функции - ЕСЛИ, ОКРУГЛ - всё, вылетает с ошибкой. Пробовала всякие варианты - вместо Value - Formula, FormulaRC, FormulaR1C1, вместо ЕСЛИ - IF. Ничего не помогает. Может, коллективный разум что подскажет? |
|||
1
probably
25.07.14
✎
20:00
|
= перед функцией стоит? или это только здесь опечатка?
|
|||
2
СантаМарина
25.07.14
✎
20:07
|
Стоит, это здесь опечатка.
|
|||
3
bolder
25.07.14
✎
20:20
|
(2) Фотки нет, непорядок)).
|
|||
4
q10n1k
25.07.14
✎
20:28
|
ExcelПриложение = Новый COMОбъект("Excel.Application");
Книга = ExcelПриложение.WorkBooks.Add(); Лист = Книга.WorkSheets(1); Лист.Cells(1,1).Formula = "=IF(0<=R2C2,1,0)"; Странно, такой вот овнокод работает нормально... |
|||
5
GreatOne
26.07.14
✎
02:47
|
Кто вылетает с ошибкой? 1С или ексель?
может попробовать Param_if = "Если"; Строкаxl.Cells(НомерСтроки,26).Value = Param_if+"(1=1;1;0)"; ? |
|||
6
DiMel_77
26.07.14
✎
03:20
|
(0) Для того чтобы использовать "рускоязычные" синонимы тебе нужно писать примерно так:
Range.FormulaR1C1Local = ... |
|||
7
СантаМарина
26.07.14
✎
13:46
|
(5)
У нас excel установлен каким-то таким хитрым образом, что англоязычные формулы он не понимает вообще. В экселе пишу if - и он не отрабатывает её. Поэтому смысла как-то "if" ему передавать нет. Ошибка такая: {ВнешняяОбработка.Обработка.МодульОбъекта(153)}: Ошибка при установке значения атрибута контекста (FormulaR1C1Local) Лист.Cells(НомерСтроки,26).FormulaR1C1Local = "=ЕСЛИ(RC[-1]<0.1;25;1)"; //промежуточный расчет по причине: Произошла исключительная ситуация (0x800a03ec) в 1С-не. |
|||
8
GreatOne
26.07.14
✎
14:15
|
если - зарезервированное слово, может поэтому ругается. Формулы никогда не использовался конечно, так что могу тупить. Я пример описал как раз передачу рарезервированного слова через переменную. Что мешает попробовать?
|
|||
9
СантаМарина
26.07.14
✎
14:26
|
А ведь заработало!
Вот так: Лист.Cells(НомерСтроки,26).FormulaR1C1Local = "=ЕСЛИ(RC[-1]<0,1;25;1)" То есть я поменяла 0.1 на 0,1. Ну и FormulaR1C1Local конечно, потому что в других вариациях excel "ЕСЛИ" не хотел понимать. Хотя очень странно, всё же. Перед этим я пишу Лист.Cells(НомерСтроки,24).Value = "=0.2037*RC[-13]" - и там не стало ошибок, когда я вместо запятой поставила разделителем точку. А тут - наоборот - вместо точки - запятую. |
|||
10
СантаМарина
26.07.14
✎
14:30
|
(8) Для 1С то, что я передаю в ячейку - просто строка и он не анализирует, что там внутри. А excel как раз и должен понять, что это его зарезервированное под формулы слово. КМК.
|
|||
11
bolder
26.07.14
✎
14:31
|
(9) Как раз все правильно.Нужно понимать , что региональный стандарт требует запятой , а RCLocal - это региональный стандарт.
|
|||
12
СантаМарина
26.07.14
✎
14:48
|
(11) О, теперь понятно, спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |