Данный код идеально работает на 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 = Новый COMОбъект("Excel.Application");
Если НЕ ПустаяСтрока(ИмяФайла) Тогда
Книга = Excel.WorkBooks.Open(ИмяФайла);
Попытка
ПересохраненыйФайл = КаталогВременныхФайлов() + "NEWtempExcel.xls";
Книга.SaveAs(ПересохраненыйФайл, -4143);
Исключение
Excel.ActiveWorkbook.Close();
Excel.WorkBooks.Close();
Excel.Quit();
Excel = Неопределено;
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(7) Файл загружается из почты. Сохраняется во временном хранилище и потом считывается на сервере из хранилища. Так что с файлом никаких проблем нету.
DCOM тоже настроен. Потому что Excel.Application создается нормально. И можно вертеть как хочешь его параметрами.
DCOM тоже настроен. Потому что Excel.Application создается нормально. И можно вертеть как хочешь его параметрами.
(10) Запустите на сервере код:
Отработает без ошибок?
Попытка
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xlsx");
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.XLSX);
EXCELApplication = Новый COMОбъект("Excel.Application");
EXCELApplication.Workbooks.Open(ИмяВременногоФайла);
EXCELApplication.ActiveWorkbook.Close(0);
EXCELApplication.Application.Quit();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Показать
(12) Нет. Файл формируется отправителем автоматически в excel 2003 года. Так что если открывать вручную то будет ругаться. Код который я написал отрабатывает с excel 2007 нормально. Он открывает поврежденный файл и перезаписывает его в новый. И новый потом можно парсить.
Но проблема в том что excel 2016 не хочет открывать даже файл.
Но проблема в том что excel 2016 не хочет открывать даже файл.
Переведи код VBA на язык 1С. Обязательно напиши решение сюда.
Создаем объект Excel, потом его открываем. Метки можно выкинуть.
Создаем объект Excel, потом его открываем. Метки можно выкинуть.
On Error GoTo l
Set objExlApp = CreateObject("Excel.Application")
On Error GoTo l0
objExlApp.Quit
Set objExlApp = CreateObject("Excel.Application.10")
On Error GoTo l1
objExlApp.Quit
Set objExlApp = CreateObject("Excel.Application.11")
On Error GoTo l2
objExlApp.Quit
Set objExlApp = CreateObject("Excel.Application.12")
Exit Sub
l:
Set objExlDoc = objExlApp.Workbooks.Open(iPath$ & nm)
Resume Next
l0:
Set objExlDoc = objExlApp.Workbooks.Open(iPath$ & nm)
Resume Next
l1:
Set objExlDoc = objExlApp.Workbooks.Open(iPath$ & nm)
Resume Next
l2:
Set objExlDoc = objExlApp.Workbooks.Open(iPath$ & nm)
Resume Next
ПоказатьSet objExlApp = CreateObject("Excel.Application")
On Error GoTo l0
objExlApp.Quit
Set objExlApp = CreateObject("Excel.Application.10")
On Error GoTo l1
objExlApp.Quit
Set objExlApp = CreateObject("Excel.Application.11")
On Error GoTo l2
objExlApp.Quit
Set objExlApp = CreateObject("Excel.Application.12")
Exit Sub
l:
Set objExlDoc = objExlApp.Workbooks.Open(iPath$ & nm)
Resume Next
l0:
Set objExlDoc = objExlApp.Workbooks.Open(iPath$ & nm)
Resume Next
l1:
Set objExlDoc = objExlApp.Workbooks.Open(iPath$ & nm)
Resume Next
l2:
Set objExlDoc = objExlApp.Workbooks.Open(iPath$ & nm)
Resume Next
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот