|
|
|
отчет в формате xls с формулами Excel ? | ☑ | ||
|---|---|---|---|---|
|
0
plant
08.02.10
✎
09:11
|
Делается отчет в 1с ,сохраняется в xls с целью продолжить обработку в
Excel помимо данных хотелось бы и сохранять экселевские формулы (суммирования и прочие) поскольку потом их вводить весьма долго, но если в ячейке записана формула при открытии в Excel она считается константой хотя если дважды щелкнуть на этой ячейке мышью ,чтобы войти в редактирование а потом ничего не сделав выбрать другую ячейку то формула становится формулой и считается ,но таких ячеек больше тысячи и дважды щелкать на каждой очень долго. Есть ли возможность решения проблемы ? |
|||
|
1
NikVars
08.02.10
✎
09:14
|
(0) Хоть бы вместо философствований привел бы формулу что для не телепатов...
|
|||
|
2
dk
08.02.10
✎
09:19
|
конечно возможно
либо по OLE менять формулы либо макросом в Excel |
|||
|
3
Seducer
08.02.10
✎
09:19
|
(0) Это? формула в Эксель.
|
|||
|
4
plant
08.02.10
✎
09:27
|
Простой пример ,отчет 1с содержит таблицу данных в правой колонке я помещаю например екселевскую формулу суммирования =СУММ(RC[-12]:RC[-1]), сохраняю в
формате xls , открываю в Excel формула не считает ,эксель воспринял что это константа но если я двойным кликом выбираю эту ячейку для редактирования и ничего не сделав перехожу к другой то - все формула стала формулой и считает |
|||
|
5
NikVars
08.02.10
✎
10:16
|
(4) "я помещаю например", как ты помещаешь например?
|
|||
|
6
jbond
08.02.10
✎
10:20
|
SpreadsheetML
только у 1С-ки нет подходящего шаблонизатора, а так очень быстро формируется (это текст) и не нужен Эксель поддерживаются сводные таблицы |
|||
|
7
DrZombi
гуру
08.02.10
✎
10:26
|
(4)Ексель лучше заполнять через АДО, а уж потом в оле его форматировать... получится быстрее ;)
|
|||
|
8
plant
08.02.10
✎
10:28
|
в конфигураторе записал в ячейку через буфер нужную формулу ,на мой взгляд проблема в том что Excel при открытии такого документа и не пытается обработать
эту ячейку как формулу но повторюсь если самому выбрать эту ячейку для редактирования и ничего не поменяв подтвердить то все сразу работает |
|||
|
9
Попытка1С
08.02.10
✎
10:28
|
А в свойствах пересчитать весь лист не покатит? ф7 вроде
|
|||
|
10
plant
08.02.10
✎
10:42
|
извиняюсь если не могу понятно донести суть проблемы ,попробую еще раз :
мне не нужен механизм OLE и прочие связи , мне нужно просто сохранить отчет в формате xls ,в этом отчете наряду с данными хотелось бы и иметь ячейки с экселевскими формулами потому что потом их очень долго вставлять а при формировании отчета они сами располагаются в нужных местах ,а формулы мне эти нужны для анализа вариантов при изменении некоторых данных , Excel при открытии такого документа считает эти формулы - константами , но при выборе и подтверждении этих ячеек все становится в порядке , но выбирать и подтверждать каждую такую ячейку трудоемко их больше тысячи . Ф7 - проверка орфографии |
|||
|
11
1Сергей
08.02.10
✎
10:45
|
ну там пункт меню Сервис > Параметры > Вычисления > Кнопка "Пересчет листа"
|
|||
|
12
plant
08.02.10
✎
10:50
|
судя по всему пересчет работает для опознанных формул , получается если я в экселе набираю знак = то он сразу понимает "будет формула" , а если ячейка записана не в экселе и начинается на знак = ему пофиг
|
|||
|
13
FN
08.02.10
✎
11:09
|
(12) сначала сохраняешь в xls, потом открываешь по ОЛЕ и во всех ячейках, значение которых начинается с "=" проставляешь Cells().FormulaLocal=Cells().Value.
|
|||
|
14
plant
08.02.10
✎
11:54
|
Это вариант (еще бы вспомнить свою практику работы с OLE) ,а при помощи макросов
возможно ? |
|||
|
15
dk
08.02.10
✎
12:50
|
(14) ты (2) читал?
|
|||
|
16
plant
08.02.10
✎
12:54
|
(15) не совсем понял
|
|||
|
17
plant
08.02.10
✎
12:55
|
в (4) я приводил формулу или нужно что то еще
|
|||
|
18
plant
08.02.10
✎
13:01
|
dk извиняюсь неправильно посмотрел номера ,но VBA особо не знаю
получается что я могу в 1С записывать формулы ,но потом в экселе нужно при помощи макроса находить эти ячейки и втолковывать экселю что это формулы ? |
|||
|
19
NikVars
08.02.10
✎
13:15
|
Процедура СоздатьНужныйФайл()
Эксел= СоздатьОбъект("Excel.Application"); ФайлЭксел = Эксел.Workbooks.Open(НужныйФайл); //Открываем нужнфй файл НашЛист = ФайлЭксел.Sheets(НужныйЛист); //Устанавливаем нужный лист КолСтрокЭксел=Эксел.Cells(1,1).SpecialCells(11).Row; //Так можно узнать количество строк в таблице Эксел!!! Если КонСтр=0 Тогда КонСтр=КолСтрокЭксел; КонецЕсли; //1.Добавляем из файла Для Н = 1 По ТД.КоличествоСтрок() Цикл ТД.ПолучитьСтрокуПоНомеру(Н); //Если СокрЛП(ТД.Е)<>"" Тогда // НашЛист.Cells(ТД.НомСтр, 5).Value = Число(ТД.Е); //КонецЕсли; Если СокрЛП(ТД.Формула)<>"" Тогда НашЛист.Cells(ТД.НомСтр, 5).FormulaLocal = СокрЛП(ТД.Формула); //FormulaLocal для русских формул!!!! //НашЛист.Cells(ТД.НомСтр, 5).Formula = СокрЛП(ТД.Формула);//Не работает нужно на формуле нажимать F2 для ее пересчета!!!! КонецЕсли; Состояние("Заполнение данных: "+Н+" из "+КонСтр); //Тест Если (Н>20) и (ТестД=1) Тогда Прервать; КонецЕсли; КонецЦикла; //Н = НачСтр ФайлЭксел.SaveAs(СокрЛП(НужныйФайл)); Эксел.WorkBooks.close(); Эксел.Quit(); КонецПроцедуры //СоздатьНужныйФайл() |
|||
|
20
dk
08.02.10
✎
13:24
|
(18) да
перебирать всю область с данными, см. (13) |
|||
|
21
plant
08.02.10
✎
14:10
|
NikVars cпасибо большое ,но более легкий для меня вариант все-таки
используя макрос перебрать таблицу .Если можно напишите как в VBA написать цикл вида : от колонки № до колонки № цикл от строки № до строки № цикл конец цикла конец цикла |
|||
|
22
Табуретко
08.02.10
✎
14:16
|
А если создать пустую таблицу с забитыми формулами и заполнять по Оле данными из эски? (как вариант)
|
|||
|
23
Табуретко
08.02.10
✎
14:17
|
у меня пара отчетов для супервайзеров по понедельникам так выгружается...
|
|||
|
24
plant
08.02.10
✎
14:37
|
(22) придется затратить n-ное количество времени на доработку отчета и проблема
еще в том что в зависимости от галочек меняется формат таблицы ,что решается если формулы прописываются тоже в 1С |
|||
|
25
plant
09.02.10
✎
05:29
|
В общем то вопрос решен : после открытия отчета в Excel запускается макрос
который проходит все ячейки и в каждой выполняет ActiveCell.FormulaLocal=ActiveCell.Value после этого формулы оживают ,наверно топорно ,зато быстро Спасибо всем кто откликнулся. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |