Имя: Пароль:
1C
 
Выгрузка в Excel и пересчет формул
Ø
0 CarpeDiem
 
27.11.06
15:00
Дамы и господа, вот такая проблема: сохраняю таблицу отчета в Ехеле, затем открываю через ОЛЕ, забрасываю формулами - а она не пересчитывается! Потом, когда жму Ентер в ячейке или заменяю знаки "равно" на "равно" - пересчитывается. Как заставить Ехель считать?
1 CarpeDiem
 
27.11.06
15:22
Памагитя люди добрыя
2 aKomper
 
27.11.06
15:27
Worksheets(1).Rows(2).Calculate
3 CarpeDiem
 
27.11.06
15:36
Пробовал так:
WorkSheet=Workbook.WorkSheets(1)
...
WorkSheet.Calculate();
4 CarpeDiem
 
27.11.06
15:38
(3) не сработало :(
5 Gosha
 
27.11.06
15:39
Навскидку: через WSH жмакни Ентер на ячейке программно (после вкидывания в неё формулы).
6 CarpeDiem
 
27.11.06
15:41
(5) Уже думал об этом, но как-то... неэлегантно, что ли.
7 aKomper
 
27.11.06
15:46
Дай весь текст
8 urban
 
27.11.06
15:53
У меня так работает:
Лист.Cells(ТаблицаВыручки.КоличествоСтрок() - 12, 7).FormulaR1C1 = "=Sum(R[-" + (ТаблицаВыручки.КоличествоСтрок() - 22) + "]C:R[-1]C)";
Лист.Range("R" + (ТаблицаВыручки.КоличествоСтрок() - 12) + ":C7").NumberFormat = "# ##0_р_.;-# ##0_р_.";
9 CarpeDiem
 
27.11.06
16:00
  Сформировать();
  Таб.Записать(КаталогИБ()+СокрЛП(Константа.ПутьКФайлуАнализаСебестоимости)+"Себестоимость "+СтрЗаменить(ПериодСтр(ДатаНач,ДатаКон),".","_"),1);
  Попытка
    Application=СоздатьОбъект("Excel.Application");
  Исключение
    Сообщить(ОписаниеОшибки(),"!!!");
    Сообщить("Возможно, MS Excel не установлен на этом компьютере.");
    Возврат;
  КонецПопытки;
  WorkBook=Application.WorkBooks.Open(КаталогИБ()+СокрЛП(Константа.ПутьКФайлуАнализаСебестоимости)+"Себестоимость "+СтрЗаменить(ПериодСтр(ДатаНач,ДатаКон),".","_")+".xls");
  Если ПустоеЗначение(WorkBook)=1 Тогда
    Application.Quit();
    Предупреждение("Ошибка при выгрузке файла.");
    Возврат;
  КонецЕсли;
  
  Worksheet=WorkBook.Worksheets(1);
  //условно константы-описатели печатной формы
  ШиринаОбластиЗамены=5;
  ПерваяКолонкаОбластиЗамены=11;//Таб.ШиринаТаблицы();
  ВысотаШапки=8;
  Попытка
    Для Прогрессор=ПерваяКолонкаОбластиЗамены+1 По ШиринаОбластиЗамены Цикл
      Для НомСтр=ВысотаШапки+1 По Таб.ВысотаТаблицы() Цикл
        WorkSheet.Cells(НомСтр, Прогрессор).Formula = WorkSheet.Cells(НомСтр, Прогрессор).Value;
        WorkSheet.Cells(НомСтр, Прогрессор).Replace("=","=");
      КонецЦикла;
    КонецЦикла;
    
    Workbook.Save();
  Исключение
    Сообщить(ОписаниеОшибки(),"!!!");
  КонецПопытки;
  Application.Quit();
  Если ФлагВыводаВФайл="Открыть после сохранения" Тогда
    ЗапуститьПриложение(КаталогИБ()+СокрЛП(Константа.ПутьКФайлуАнализаСебестоимости)+"Себестоимость "+СтрЗаменить(ПериодСтр(ДатаНач,ДатаКон),".","_")+".xls");
  КонецЕсли;
10 CarpeDiem
 
27.11.06
16:03
(8) а у меня в формулу записывается текст. Пробовал и Formula и Formula R1C1. Все болит, ничего не помогает ;)
11 Gloom
 
27.11.06
16:11
(10)А сама формула секретная?
12 Gosha
 
27.11.06
16:11
// У тебя формулы уже в Таб впиндюрены - я правильно понимаю?
// Заменить:
//WorkSheet.Cells(НомСтр, Прогрессор).Replace("=","=");
// На:
WorkSheet.Cells(НомСтр, Прогрессор).Calculate
// - тоже не поможет?
13 Дурочка 1С ™
 
27.11.06
16:11
Что это было в (9)?
14 CarpeDiem
 
27.11.06
16:18
(12) увыувы, сначала я попробовал именно Calculate, причем как для каждой ячейки, так и для всего листа перед сохранением.
Формулы формируются как строки и выводятся в таблицу в 1С, это так.
(13) Кусок кода :)
15 CarpeDiem
 
27.11.06
16:31
(13) Работающий :))))