Имя: Пароль:
1C
1С v8
Запись в Excel из 1С
0 bek_bassar
 
06.07.13
15:30
Хочу записать данные из запроса в уже имеющийся excel файл.
Вот код:
ДокОбъект = ПолучитьCOMОбъект(ПутьКФайлуExcel);
    НомерЛ = 1;
    Книга = ДокОбъект.sheets(НомерЛ);
    arr     = Книга.UsedRange;
   
    Выборка = ГотовыйОтчет();
    Для Каждого  СтрокаТЗ из Выборка Цикл
    ШК =СтрокаТЗ.ШтрихКоды;
    СтрокаШК = СтрЗаменить(ШК," ","");
    //делаем поиск
    НайденнаЯчейка = arr.Find(ШК);
   
    НомерСтроки = СтрЗаменить(НайденнаЯчейка.Address,"$B$","");
   
    Книга.Cells(НомерСтроки,Номерколонки).Value = Строка(СтрокаТЗ.КоличествоОборот);
    КонецЦикла;


Выдает ошибку при записи в ячейку: {Форма.Форма.Форма(166)}: Ошибка при вызове метода контекста (Cells)
    Книга.Cells(НомерСтроки,Номерколонки).Value = Строка(СтрокаТЗ.КоличествоОборот);
по причине:
Произошла исключительная ситуация (0x800a03ec)
Как правильно записать в ячейку excel?
1 icrocodile
 
06.07.13
18:52
Эксель = Новый COMObject("Excel.Application");
       Книга = Эксель.WorkBooks.Open(ИмяФайла);
       Лист = Книга.WorkSheets(НомерЛиста);
       area  = Лист.UsedRange;
       НайденнаЯчейка = area.Find(ИскомоеЗначение);        
       Лист.Cells(НайденнаЯчейка.Row,НайденнаЯчейка.Column).Value = Значение;
       Книга.SaveAs(ИмяФайла);
       Эксель.Application.Quit();
2 bek_bassar
 
06.07.13
22:13
(1) Спасибо. Прокатило.
Теперь другая проблема. Файл в который я записываю имеет защиту,т.е. колонки, в которые я пытаюсь записать записать из 1с, редактируются только интерактивно, вставить из буфера или изменить формат - эти действия не доступны.
Как можно обойти защиту?
3 ДенисЧ
 
06.07.13
22:40
а нефиг в защищённые файлы писать..
4 bek_bassar
 
06.07.13
23:20
да клиенту нужно. аптечная тема...
5 Красный рассвет
 
06.07.13
23:38
(4) У Микрософта пробовал узнавать?
6 bek_bassar
 
07.07.13
08:59
форум миста мне роднее
7 Мимохожий Однако
 
07.07.13
09:12
Сними защиту руками. Потом используй через 1С.
8 icrocodile
 
07.07.13
19:36
(2) а если снять защиту программно, не прокатит ?
Лист.Cells(НайденнаЯчейка.Row,НайденнаЯчейка.Column).Locked=0;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан