|
|
|
Выгрузка в 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) Работающий :))))
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |