Здравствуйте, есть отчёт, я его сохраняю в Ексель. Но при открытии формулы отображаются как текст. В Екселе написал макрос, который преобразует текст в формулы.
Но постоянно ставить макрос напряжно, можно ли записать сам макрос в 1с?

Или как мне сохранить отчёт в Ексель, что бы формулы уже сразу были в виде формул?
---
Спасибо всем за помощь, очень помогла данная статья: https://infostart.ru/public/869535/
---
Для этого надо работать из 1С с объектом, а в нем есть свойство формула...
---
Вот я сохранил Эксель, Это и есть мой объект. Мне нужно запустить макрос, для данного файла, но не открывать его для пользователя. Я могу так сделать?
---
да)
---
Воо, мы пришли к моему вопросу. Как?)

  ДиалогВФ = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
  ДиалогВФ.Фильтр = "Лист Excel (*.xls)|*.xls";
  Если НЕ ДиалогВФ.Выбрать() Тогда
   Сообщить("Не удалось сохранить файл");
   Возврат;
  КонецЕсли;

Вот я получил путь к файлу куда сохранил отчёт, как для него сделать макрос? Что бы он отработал после сохранения?
---
команды vba доступны в 1С через com-объект
---
Вот я сохранил Эксель, Это и есть мой объект.
ты сохранил файл, формата эксель.

Далее тебе надо подключится к самому экселю через ком, открыть экселем этот файл, и вкорячить в него свой макрос.
Но это методы уже именно экселя, при его непосредственном участии.

Чисто средствами 1С, создать файл с макросами - нельзя
---
Я написал макрос под эксель. Вот сам Макрос:

"Sub МакросДляОтчета()

'
' МакросДляОтчета Макрос
' Преобразование формул из 1с
'
' Сочетание клавиш: Ctrl+к
'
    Cells.Select
    Range("J8").Activate
    Selection.NumberFormat = "#,##0.00_р_."
    Selection.Replace What:="=", Replacement:="=", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

End Sub

Куда мне в 1с записать макрос и запустить его?
---
Я нашёл обработку которая обрабатывает макрос для эксель в 1с. Это верно?

Ехсел = Новый COMОбъект("Excel.Application");
Книга = Ехсел.Workbooks.Add;
MR = Книга.VBProject;
NM = MR.VBComponents.Add(1);
NM.CodeModule.InsertLines(1,"Sub МакросДляОтчета()");
NM.CodeModule.InsertLines(2,"'");
NM.CodeModule.InsertLines(3,"' МакросДляОтчета Макрос");
NM.CodeModule.InsertLines(4,"' Преобразование формул из 1с");
NM.CodeModule.InsertLines(5,"'");
NM.CodeModule.InsertLines(6,"' Сочетание клавиш: Ctrl+к");
NM.CodeModule.InsertLines(7,"'");
NM.CodeModule.InsertLines(8," Cells.Select");
NM.CodeModule.InsertLines(9," Range(""J8"").Activate");
NM.CodeModule.InsertLines(10," Selection.NumberFormat = ""#,##0.00_р_.""");
NM.CodeModule.InsertLines(11," Selection.Replace What:=""="", Replacement:=""="", LookAt:=xlPart, _");
NM.CodeModule.InsertLines(12," SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _");
NM.CodeModule.InsertLines(13," ReplaceFormat:=False");
NM.CodeModule.InsertLines(14,"End Sub");
---
ну примерно.
Не обрабатывает а вставляет макрос в лист эксель.

Только книгу тебе надо открыть из файла, который ты сначала сохраняешь из 1С.
а потом вставляешь макрос

вот тут

```1c
    Книга = Ехсел.Workbooks.Add;
```

тебе надо

```1c
    Книга = Ехсел.Workbooks.open(ИмяФайла);
```
---
Ага спасибо, а как мне теперь его активизировать?
---
Через com объект подключаешься и не макрос там создаешь, а прямо в ячейки пишешь из 1С формулы...
---
Так у меня уже в отчете есть формулы, и сохраняю я отчет уже с формулами, просто они не хотят отрабатывать сразу, а нужно их активировать. В этом вся проблема... Просто помимо всего Нужно поменять формат ячеёк, а макросом я могу сделать 2 действия сразу.
Мне кажеться, получать снова ексель файл, обходить его, и опять закидывать формулы. это тупо немного
---
Не понял - откуда у Вас в отчете формулы? Где Вы их храните? В объекте excel формат также, как и формулы в свойство ячейки пишем.
---
У меня есть отчет, обычный. Есть обработка на кнопке, которая нужные мне значение заменяет на формулы и сохраняет этот документ в Эксель. Проблема стала в том, что при открытии "=R[1]C+R[7]C" - стоит такое значение, а не готовое число.
Я написал макрос который заменяет "=" на "=" и тогда формулы работают нормально. Но макрос запускать на разных компах, затратно.
Возник вопрос, как запустить макрос в 1с, что бы файл Эксель уже сохранялся с отработающим макросом
---
Я прохожу по полю табдока и заменяю значение на формулы, а потом сохраняю отчет
---
```1c
    Excel = ПолучитьCOMОбъект(ПутьКФайлу);
    Лист = Excel.Sheets(1);
    Ячейки = Лист.Range(Лист.Cells(НомерПервойСтроки, НомерПервогоСтолбца), Лист.Cells(НомерПоследнейСтроки, НомерПоследнегоСтолбца));
    Ячейки.NumberFormat = "#,##0.00_р_.";
    Ячейки.FormulaR1C1 = МояФормула;
```

не пробовал, должно работать
---
mat = "#,##0.00_р_.";
по причине:
Произошла исключительная ситуация (Microsoft Excel): Нельзя установить свойство NumberFormat класса Range
---
вот ссылку нашел https://flumi.ru/articles/show/rabota_s_ms_excel_v_1s
---
Я сделал точь в точь как во втором варианте, но проблема, что формулы у меня как текст( А как заменить я не знаю.

Мне кажется я понял, изначально нужно сохранить обычный отчет, а потом уже запускать Ексель и менять ячейки на формулы
---
Сохранять надо программно объект excel. Все автоматом должно работать.
Покажите фрагмент кода - может кто увидит в чем проблема у Вас.
---
ДиалогВФ = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
  ДиалогВФ.Фильтр = "Лист Excel (*.xls)|*.xls";
  Если НЕ ДиалогВФ.Выбрать() Тогда
   Сообщить("Не удалось сохранить файл");
   Возврат;
  КонецЕсли; //Сохраняю файл

//Дальше идёт код замены значений в отчете,

Попытка
   ДокументРезультат.Записать(ДиалогВФ.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS);
   Сообщить("Файл сохранен");
  Исключение
   Сообщить("Не удалось сохранить файл");
  КонецПопытки; //ДокументРезультат = ПолеТабДока

При открытии Эксель файла, получаю вот такой вид (Файл прикрепил). Вот мне нужно сразу, что бы при сохранении формулы работали как формулы.
---
Спасибо всем за помощь, очень помогла данная статья: https://infostart.ru/public/869535/