Вход | Регистрация


Перенести формулу в Excel при стандартном сохранении табличного документа 1с 8

Перенести формулу в Excel при стандартном сохранении табличного документа 1с 8
Я
   DmitriyDI
 
24.05.18 - 15:36
Добрый день!
Есть табличный документ, в ячейке пишу: "=R6C2 - R10C2 - R12C2 - R14C2 - R17C2", сохраняю, таб. док сохраняю через Записать().

В сохраненном документе, отображается вместо моей формулы текст, если два раза по нему нажать, то появляется формула, как можно сделать, чтобы формула появлялась сразу при открытии эксель файла?
 
 
   DmitriyDI
 
1 - 24.05.18 - 15:40
(0) Может какой скрипт после сохранения над файлом экселевским выполнить. Или может обойти его перебором и что-нибудь указать?
   Масянька
 
2 - 24.05.18 - 15:42
(0) В настройках Excel - "показывать формулы, а не их значения".
   bolobol
 
3 - 24.05.18 - 15:44
(2) Это как поможет?
   DmitriyDI
 
4 - 24.05.18 - 15:47
(2) Это не то
   DmitriyDI
 
5 - 24.05.18 - 15:51
(0) пока выход видится такой, после сохранения подключаться к файлу, пробегать перебором, если текст ячейки начинается с =, то писать что-то вроде Ехсел.Cells(1, 3).FormulaR1C1.FormulaR1C1 = "=R6C2 - R10C2 - R12C2 - R14C2 - R17C2";
   Gantosha
 
6 - 24.05.18 - 15:54
FormulaR1C1 ты формулу куда пишешь - ее вот сюда надо писать .
   DmitriyDI
 
7 - 24.05.18 - 15:55
(6) я формулу пишу в табличный документ 1Совский)) потом сохраняю как эксель
   Gantosha
 
8 - 24.05.18 - 15:57
ну, ето я не знаю ..у мне есть формулы , но там сохраняется в лист .. правда механизм расчета куда что писать дикий.
Но видимо с формулами и записью в 1с отчет тоже не прокатило. Иначе бы не стал мучатся.
   DmitriyDI
 
9 - 24.05.18 - 16:32
Есть еще варианты решения данной задачи? Пока пытаюсь заставить ком экселевский работать на сервере.
   bolobol
 
10 - 24.05.18 - 16:38
Можно попробовать в Эксель.Аппликейшн открыть этот файл и Селект(); Селектион.Реплэйс("=", "="); сделать. Интерактивно срабатывает.
 
 Рекламное место пустует
   DmitriyDI
 
11 - 24.05.18 - 17:01
(10) Понял, спасибо! Буду пробовать.
   DmitriyDI
 
12 - 24.05.18 - 17:33
(0) дописал так, работает, если кому нужно (Вложение - полное имя сохраненного файла эксель):

    Excel = Новый COMОбъект("Excel.Application");   
    Книга = Excel.WorkBooks.Open(Вложение); 
    Excel.Visible = 0;
    Excel.ActiveWindow.DisplayWorkbookTabs = 1; 
    Excel.ActiveWindow.TabRatio = 0.6;    
    
    Лист = Книга.WorkSheets(1);
    
    ВсегоСтрок = Лист.Cells.SpecialCells(11).Row;//-кол-во строк всего

    ВсегоКолонок = Лист.Cells.SpecialCells(11).Column;//-кол-во колонок всего

    
    Для а = 1 По ВсегоСтрок Цикл
        Для б = 1 по ВсегоКолонок Цикл
            Если Лев(Лист.Cells(а, б).FormulaR1C1, 1) = "=" Тогда
                Лист.Cells(а, б).FormulaR1C1 = Лист.Cells(а, б).FormulaR1C1;
            КонецЕсли;
        Конеццикла;
    Конеццикла;
    
    FullName = Excel.ActiveWorkbook.FullName;            
    Excel.DisplayAlerts = false;
    Excel.ActiveWorkbook.SaveAs(FullName, 51);// 18 - xls 97-2003; 51 - xlsx 2007-2013

    //Excel.Visible = 1;       // если нужно поработать дальше с книгой

    Excel.Application.Quit();// если просто выходим
   bolobol
 
13 - 25.05.18 - 09:15
А не проверял, случаем, с Селект(); Селектион.Реплэйс("=", "="); ? - не работает?
   DmitriyDI
 
14 - 25.05.18 - 09:56
(13) нет, точно синтаксиса не знаю, поэтому не стал
   bolobol
 
15 - 25.05.18 - 10:18
Для колонки "й", как взять именно колонку целиком, или от колонки до колонки, или весь лист - чтоб более просто - не скажу, а и почему именно так написано - тоже, Параметры - первый "на что меняем", а далее что за ,2,1,0,0 - тоже не вспомню, но, думаю, МСДН может пролить свет:
                                Эксель.Range(Эксель.Sheets(_ИспользуемаяСтраница).Cells(_НомерСтрокиЗаголовков+1,й),
                                    Эксель.Sheets(_ИспользуемаяСтраница).Cells(КонечнаяСтрокаДанных,й)).Select();
                                Эксель.Selection.Replace("Истина", 1, 2, 1, 0, 0);
                                Эксель.Selection.Replace("Да", 1, 2, 1, 0, 0);
                                Эксель.Selection.Replace("Нет", 0, 2, 1, 0, 0);
                                Эксель.Selection.Replace("Ложь", 0, 2, 1, 0, 0);
   bolobol
 
16 - 25.05.18 - 10:19
Первый - "что меняем", в второй - "на что", и далее ",2,1,0,0"- непонятных
   bolobol
 
17 - 25.05.18 - 10:20
Эксель = новый COMОбъект("Excel.Application");

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует