Данный код идеально работает на 2003 и 2007 excel. Но отказывается на последних версиях excel. Подскажите как правильно работать с Excel.Application последних версий Excel.

//*********************************************************

Excel = Новый COMОбъект("Excel.Application");

 Если НЕ ПустаяСтрока(ИмяФайла) Тогда

  Книга = Excel.WorkBooks.Open(ИмяФайла);

  Попытка

   ПересохраненыйФайл = КаталогВременныхФайлов() + "NEWtempExcel.xls";

   Книга.SaveAs(ПересохраненыйФайл, -4143);

  Исключение

   Excel.ActiveWorkbook.Close();
                 Excel.WorkBooks.Close();
                 Excel.Quit();
                 Excel = Неопределено;

   Сообщить(ОписаниеОшибки());

  КонецПопытки;
 КонецЕсли;
---
Решение было найдено. Перезапись поврежденных или сохраненных Excel 2003 xls файлов можно производить с помощью

1. libreoffice
2. Excel 2007 с настройкой DCOM
---
А что происходит? Вылетает по исключению? На какой строке?
---
Строка:

Книга = Excel.WorkBooks.Open(ИмяФайла);

Ошибка: Ошибка при вызове метода контекста (Open)
---
пальцем в небо

Книга.SaveAs(ПересохраненыйФайл, -4143, , , , , , 2);
---
В том же направлении:

Excel.ActiveWorkbook.SaveAs(.....
---
До этого момента не доходит даже. На Open вылетает ошибка.
---
Может быть, выполнение происходит на стороне сервера, а файл на клиенте?..
---
Файл загружается из почты. Сохраняется во временном хранилище и потом считывается на сервере из хранилища. Так что с файлом никаких проблем нету.

DCOM тоже настроен. Потому что Excel.Application создается нормально. И можно вертеть как хочешь его параметрами.
---
При наличии (и корректности) файла должен без проблем отрабатывать код:

```1c
    Excel = Новый COMОбъект("Excel.Application");
    Книга = Excel.WorkBooks.Open(ИмяФайла);
```

Что в сообщении об ошибке?
---
Да объект Excel создается. И есть возможность вертеть как хочешь его параметрами. Но проблема когда пытаемся открыть файл с помощью - Open

В строке: Книга = Excel.WorkBooks.Open(ИмяФайла);

Ошибка: Ошибка при вызове метода контекста (Open)
---
Очень похоже на попытку открытия несуществующего файла.
---
Запустите на сервере код:

```1c
    Попытка
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xlsx");

    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.XLSX);

    EXCELApplication = Новый COMОбъект("Excel.Application");
    EXCELApplication.Workbooks.Open(ИмяВременногоФайла);

    EXCELApplication.ActiveWorkbook.Close(0);
    EXCELApplication.Application.Quit();
    Исключение
    Сообщить(ОписаниеОшибки());
    КонецПопытки;
```
Отработает без ошибок?
---
Да, с xls и xlsx Ваш код работает. Но проблема в том что приходит на почту файл сформированный на excel 2003. И для того что б была возможность открывать нужно перезаписать в новый файл.
---
Попробуйте так:
```1c
    Excel.WorkBooks.Open(ИмяФайла,,,,,,,,,,,,,, CorruptLoad)
```

```1c
    CorruptLoad (цифра 0-2):

    xlNormalLoad 0 Workbook is opened normally.
    xlRepairFile 1 Workbook is opened in repair mode.
    xlExtractData 2 Workbook is opened in extract data mode.
```
---
Файл загружается из почты. Сохраняется во временном хранилище и потом считывается на сервере из хранилища. Так что с файлом никаких проблем нету.
А руками файл открывается нормально, без ошибок?
---
Нет. Файл формируется отправителем автоматически в excel 2003 года. Так что если открывать вручную то будет ругаться. Код который я написал отрабатывает с excel 2007 нормально. Он открывает поврежденный файл и перезаписывает его в новый. И новый потом можно парсить.

Но проблема в том что excel 2016 не хочет открывать даже файл.
---
сначала добейтесь открытия файла в ручном режиме. Программно происходят те же процессы, что и при ручном открытии. Проверенно опытом.
---
Переведи код VBA на язык 1С. Обязательно напиши решение сюда.
Создаем объект Excel, потом его открываем. Метки можно выкинуть.
---
Я данным примером и руководствовался.

Excel = Новый COMОбъект("Excel.Application");

Книга = Excel.WorkBooks.Open(ИмяФайла);

На Open - кидает ошибку Ошибка при вызове метода контекста (Open)
---
Может так:
Excel = Новый COMОбъект("Excel.Application.16");
---
Решение было найдено. Перезапись поврежденных или сохраненных Excel 2003 xls файлов можно производить с помощью

1. libreoffice
2. Excel 2007 с настройкой DCOM