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

1. Светлый ум 406 21.12.15 08:09 Сейчас в теме
	// 1) Заходим в Excel	
	Excel = Новый COMОбъект("Excel.Application");
	Excel.DisplayAlerts = 0;
	Excel.ScreenUpdating = 0;
	Excel.EnableEvents = 0;    
	Excel.Visible = 0;
	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xls");
	ДвоичныеДанные = ПолучитьМакет("ШаблонExcel");
	ДвоичныеДанные.Записать(ИмяВременногоФайла);
	Книга = Excel.WorkBooks.Open(ИмяВременногоФайла);
	Лист = Книга.WorkSheets(1);
	
	// 2) Как-то редактируем Excel
	ШапкаОтчетаОбласть = Лист.Range("Шапка");
	ШапкаОтчетаОбласть.Find("<ДатаОтчета>").Value = Строка(Формат(СсылкаНаОбъект.ПолучитьОбъект().Дата, "ДЛФ=ДД"));
	
	// 3) Сохраняем Excel 
	Книга.SaveAs(ИмяВременногоФайла);  
	
	  
	// 4) Открываем Excel, для редактирования пользователем
	
	Excel.ReferenceStyle = 1;		//Стиль ссылок A1
	Excel.EnableEvents=Истина;		//разрешена обработка событий экселем
	Excel.visible=Истина;			//Отобразить файл.
	Excel.DisplayAlerts = Истина;
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
11. ditp 91 21.12.15 11:00 Сейчас в теме
см. вложение.

немного поменял код, также был косяк с макетом екселя, тоже поправил.
Прикрепленные файлы:
ПФ (внешняя) + Excel шаблон - Версия 3 - для infostart (1).epf
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
6. 32ops 191 21.12.15 09:36 Сейчас в теме
(1) Непонятное, что-то. Excel.visible=1 попробовать и EnableEvents,DisplayAlerts - убрать совсем - будут ли изменения?
9. Светлый ум 406 21.12.15 10:21 Сейчас в теме
(6)32ops, "Excel.visible=1 попробовать и EnableEvents,DisplayAlerts - убрать совсем"
- Попробовал, не помогло.
12. Светлый ум 406 21.12.15 11:11 Сейчас в теме
Огромное спасибо, итоговый код:
---

мИмяШаблона= "ШаблонРеестр";	
	ФайлОбработки = Новый Файл(ИспользуемоеИмяФайла);
	
	//1) Заходим в Excel	
	Excel = Новый COMОбъект("Excel.Application");
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xlsx");
	ИмяВременногоФайла2 = ПолучитьИмяВременногоФайла("xlsx");
	ДвоичныеДанные = ПолучитьМакет("ШаблонExcel");
	ДвоичныеДанные.Записать(ИмяВременногоФайла);
	Книга = Excel.WorkBooks.Open(ИмяВременногоФайла);
	Лист = Книга.WorkSheets(1);
	
	//2) Как-то редактируем Excel
	ШапкаОтчетаОбласть = Лист.Range("Шапка");
	ШапкаОтчетаОбласть.Find("<ДатаОтчета>").Value = Строка(Формат(СсылкаНаОбъект.ПолучитьОбъект().Дата, "ДЛФ=ДД"));
		
	//3) Сохраняем Excel 
	Книга.SaveAs(ИмяВременногоФайла2);  
	УдалитьФайлы(ИмяВременногоФайла);
	
	// 4) Открываем Excel, для редактирования пользователем
	Excel.Visible	= Истина;
Показать
timeforlive; +1 Ответить
14. alljoke 21.12.15 11:19 Сейчас в теме
Процедура СформироватьПФ_Excel() Экспорт
	
	мИмяШаблона= "ШаблонРеестрПлатежейТНП1";	
	ФайлОбработки = Новый Файл(ИспользуемоеИмяФайла);
	
	//1) Заходим в Excel	
	Excel = Новый COMОбъект("Excel.Application");
	Excel.DisplayAlerts = 0;
	Excel.ScreenUpdating = 0;
	Excel.EnableEvents = 0;    
	Excel.Visible = 0;
	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xls");
	ДвоичныеДанные = ПолучитьМакет("ШаблонExcel");
	ДвоичныеДанные.Записать(ИмяВременногоФайла);
	Книга = Excel.WorkBooks.Open(ИмяВременногоФайла);
	Лист = Книга.WorkSheets(1);
	
	//2) Как-то редактируем Excel
	ШапкаОтчетаОбласть = Лист.Range("Шапка");
	ШапкаОтчетаОбласть.Find("<ДатаОтчета>").Value = Строка(Формат(СсылкаНаОбъект.ПолучитьОбъект().Дата, "ДЛФ=ДД"));
		
	//3) Сохраняем Excel 
	Книга.SaveAs(ИмяВременногоФайла);  
	//Книга.Close();
		
	//4) Открываем Excel, для редактирования пользователем
	
	Excel.ReferenceStyle = 1;		//Стиль ссылок A1
	//Excel.EnableEvents=Истина;		//разрешена обработка событий экселем
	//Книга.DisplayWorkbookTabs = True;
	
	//Excel.DisplayAlerts = Истина;
	Excel.ScreenUpdating = False;
    Лист.Visible = "xlSheetVisible";
    Excel.ScreenUpdating = True;
	Excel.visible = Истина;			//Отобразить файл.
	//Книга.Close();
   	//Excel.Quit();
	
КонецПроцедуры
Показать


Попробуйте.
Светлый ум; +1 Ответить
2. torch 128 21.12.15 09:04 Сейчас в теме
надо еще закрыть файл:
Excel.Close()
4. Светлый ум 406 21.12.15 09:29 Сейчас в теме
1) Метод объекта не обнаружен (Close)
Excel.Close();

2) Книга.Close() - отработало, но ничего не изменилось.

(2)(3) torch, не взлетело.
3. torch 128 21.12.15 09:05 Сейчас в теме
Если это не прокатит надо
Книга.Close()
5. Светлый ум 406 21.12.15 09:33 Сейчас в теме
Сейчас сделаю и выложу внешнюю обработку для отладки, может так проще подсказать будет. А то уже кучу всего перепробовал - а танцы с бубном всё не помогают.
7. alljoke 21.12.15 09:53 Сейчас в теме
10. Светлый ум 406 21.12.15 10:22 Сейчас в теме
(7)alljoke, Excel.Quit() - эта команда просто закрыла эксель, а мне нужен открытый файл Excel для редактирования.
8. Светлый ум 406 21.12.15 10:19 Сейчас в теме
Выкладываю файл внешней обработке - СсылкаНаОбъект привязана к "Реализации товаров и услуг", т.е. обработка отработает в любой типовой (у меня УПП).
Прикрепленные файлы:
ПФ (внешняя) + Excel шаблон - Версия 3 - для infostart.epf
11. ditp 91 21.12.15 11:00 Сейчас в теме
см. вложение.

немного поменял код, также был косяк с макетом екселя, тоже поправил.
Прикрепленные файлы:
ПФ (внешняя) + Excel шаблон - Версия 3 - для infostart (1).epf
13. Светлый ум 406 21.12.15 11:13 Сейчас в теме
(11) ditp, И если не трудно опишите в чем был косяк в макете?
15. timeforlive 15 21.12.15 11:24 Сейчас в теме
(13) Светлый ум, я оставлял на сайте .epf с исходным кодом по выгрузке из Excel в 1С (в том числе формирование таблицы Excel из 1С):
http://infostart.ru/public/366601/
Вдруг поможет.

Добавлю в своей публикации ссылку на эту тему. Полезно и лаконично.
nikgol; Светлый ум; +2 Ответить
17. Светлый ум 406 21.12.15 13:04 Сейчас в теме
(15) timeforlive, да действительно интересная и хорошо оформленная статья, от себя выложил пару плюшек по работе с Excel - продублирую здесь:

//### Примеры работы с Excel ячейками ###

//1) Стандартное форматирование числа
// mSheet.Cells(row,i).Value=Формат(стр[мИмя],"ЧДЦ=2; ЧН=; ЧГ=0");

//2) Стандартное форматирование даты
// ШапкаОтчета.Find("<ДатаОтчета>").Value = Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy");

//3)Программная установка формул в ячейку - Excel в 1с.
а) Например, нужно посчитать сумму в столбце 8 в той же строке из столбца 1+ столбца 2.
СтрокаСФормулой = "=RC[-7]+ RC[-6]";
Лист.Cells(НомерСтроки,НомерКолонки).Formula = СтрокаСФормулой.
---------------------
б) Считаем итого по строкам:
//Шаблон формулы: "=SUM(F13:F14)";
СтрокаСФормулойИтогоОстатки = "=SUM(F" + Строка(НомерИсходнойСтрокиОстаткиОборотыExcel) +
":F" + Строка(НомерСтрокиОстаткиОборотыДляФормулы) + ")";

ТекСтрокаПодвалИтогоОстаток.Value = СтрокаСФормулойИтогоОстатки;
16. ditp 91 21.12.15 11:34 Сейчас в теме
(13) Светлый ум, насчет формата:

Я попробовал ваш макет из обработки выгрузить с расширением xls и открыть в экселе, получил ошибку формата.
Перепаковал файл, переименовал в xlsx, при попытке открытия получил опять несоответствие формата, но файл открылся.
При попытке пересохранения файла ексель предложил считать его шаблоном (xltx).
И только когда принудительно записал как xlsx, файло стало открываться без лишних вопросов.
Светлый ум; +1 Ответить
18. babys 90 07.12.17 15:07 Сейчас в теме
Подниму ветку.
А без создания временно файла никак?
19. Интерес 15.05.18 17:29 Сейчас в теме
Книга = Excel.WorkBooks.Open(ИмяФайла,,Ложь);
может это поможет
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день