Имя: Пароль:
1C
 
Проблема с формулами в Excel, вставленными из 1С
0 NikVars
 
05.12.08
12:03
Имеется с нужными данными xls-файл НужныйФайл, в который я загнал формулы из 1С. Вот так:

   Эксел= СоздатьОбъект("Excel.Application");
   ФайлЭксел = Эксел.Workbooks.Open(НужныйФайл);
   НашЛист = ФайлЭксел.Sheets(НужныйЛист);        
   Для Н = 1 По ТД.КоличествоСтрок() Цикл                            
       ТД.ПолучитьСтрокуПоНомеру(Н);
       Если СокрЛП(ТД.Формула)<>"" Тогда        
           НашЛист.Cells(ТД.НомСтр, 5).Formula = СокрЛП(ТД.Формула);
//Например, ТД.Формула=”=СУММ(D5:D19)+E4-C5” - строка
       КонецЕсли;
   КонецЦикла;  
   ФайлЭксел.SaveAs(СокрЛП(НужныйФайл));
   Эксел.WorkBooks.close();
   Эксел.Quit();

Файл сохраняется, но при открытии этого файла все вставленные из 1С формулы автоматом не пересчитываются, вместо них выводится сообщение #ИМЯ?. Однако, если стать на ячейку с формулой, введенной из 1С, и нажать клавишу F2, то показываются на листе выделением ячейки, участвующие в формуле, разными рамочками, и если далее щелкнуть мышкой вне этой ячейки, то формула пересчитывается.
Далее файл сохраняется и все работает как обычно.
А что нужно сделать, чтобы все пересчиталось автоматом при открытии файла?
Или как пересчитать лист автоматом или книгу?
Еще в Excel в Сервис-Параметры-Вычисления стоит точка Вычисления автоматически. Там же если нажать на кнопку Вычислить или F9 на листе. Ничего не происходит.
1 ТелепатБот
 
гуру
05.12.08
12:03
2 NikVars
 
05.12.08
12:04
+(0) Вдогонку...
Проверял это все на 3 компах под Офисом 2003. Результат один.
3 lea_220400
 
05.12.08
12:06
делай пустую строку с этими формулами и копируй потом эту строку при сохранении формул и свойст ячеек программно
4 Cap_1977
 
05.12.08
12:06
(0) Формулы надо писать в аглицком варианте. Когда пишешь в русском она почему-то не работает до тех пор пока не передернешь ячейку.
5 NikVars
 
05.12.08
12:08
(3) Не понял фразы "делай пустую строку с этими формулами".
(4) Понял! Попробую!
6 lea_220400
 
05.12.08
12:14
(5) делал года два назад, есть файл Excel, там есть начальное заполнение, просто копировал предыдущую строку с сохранением её вида и всех формул и т.д., а отом ее заполнял, для продажников делал, удобно для 5-10 магазинов, а ля крупной сети не очень, т.к. много весит и долго будет собирться, зато там можно в 1С не париться с заполнением формул и делить продажи по средним чекам и всему остальному, типа по неделям и месяцам и кварталам.
7 NikVars
 
05.12.08
12:17
(4) Попробовал... Что у меня нету такой функции SUM, есть только СУММ.
Чего делать?!
8 NikVars
 
05.12.08
12:18
(6) То есть ты предлагаешь ту колонку предваритель заполнить какой-нибудь формулой? А потом прогнать в 1С и подставить другую формулу?
9 Cap_1977
 
05.12.08
12:19
(7) Напиши SUM вместо СУММ :)))
10 NikVars
 
05.12.08
12:22
(9) А ты сам в эксел в ячейки нажми = напиши это. Интересно, заработает??? :))
У меня не работает.
11 smaharbA
 
05.12.08
12:25
ветка на один пост, развели бодягу
.FormulaLocal=
12 NikVars
 
05.12.08
12:29
(6) Забил по всему столбцу перед вставкой формулы в 1С формулу "=0+0", ексел ее вычисляет. Прогнал через обработку, та же петрушка, где я вставил формулу #ИМЯ?.
И еще.
Я не могу копировать формулу. У меня алгоритм расчета в 1С хитроумный, простым копированием он не решается, так в одной строчке суммируются 5 ячеек, в другом 10, в третьем одна. Это зависит от данных в других стоблцах. Так же и слагаемое прыгает относительно нужной строчки как зря.
13 NikVars
 
05.12.08
12:31
(11) Ура!!!!!!!!!!!!!!!!!!! Заработало!!!!!!!!!!!!
И где ты раньше-то был!!!
Спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!
14 smaharbA
 
05.12.08
12:33
(13) некогда мне, я легенду о лендлизе развенчиваю и политое грязью имя отца народов отмываю...
15 NikVars
 
05.12.08
12:35
(11) А в чем тогда разница между .FormulaLocal= и .Formula=?
16 OFF
 
05.12.08
12:36
17 smaharbA
 
05.12.08
12:37
можешь и formula, но тогда делай как в (9) и точки запятой меняй на запятые
18 NikVars
 
05.12.08
12:38
Нашел ответ!
FormulaLocal для русских названий!!!
Спасибо всем!!!!!!!!!!!!
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.