Имя: Пароль:
1C
 
запись в ексель
0 Pandoch
 
03.09.14
11:12
Добрый день, господа. Пытаюсь перезаписать ячейку в защищенном файле. но При закрытии файла выдает ошибку:

Произошла исключительная ситуация (Microsoft Excel): Ошибка доступа к документу 'Пампарам.xls', допускающему доступ только для чтения.

Вот код:

МассивФайлов = НайтиФайлы(ПутьКПапке, "*.XLS");
    Отказ = Ложь;
    Для каждого Файл Из МассивФайлов Цикл
        
        имяФайла = Файл.полноеИмя;
        
        Попытка
            Эксель = Новый COMОбъект("Excel.Application");
        Исключение
            Сообщить(ОписаниеОшибки() + " Не удалось запустить MS Excel");
            Прервать;
        КонецПопытки;
        
        Книга = Эксель.WorkBooks.Open(имяФайла);
        Эксель.DisplayAlerts=0;//не выдавать предупреждений
        
        
        ОшибкаДанных = Ложь;
        Если НЕ Книга.ActiveSheet.ProtectContents Тогда
            Сообщить(""+имяФайла+" проблемный файл(возможно отредактирован)");
            Эксель.Application.Quit();
            ТранзакцияОткрыта = Ложь;
            ОтменитьТранзакцию();
            Прервать;
        КонецЕсли;
        
        Попытка
            Лист = Книга.WorkSheets(1);
            Книга.ActiveSheet.UnProtect("sNlw3IxcXv");
        Исключение
            Сообщить(""+имяФайла+" проблемный файл.");
            Эксель.Application.Quit();
            Прервать;
        КонецПопытки;
        
        Книга.ActiveSheet.Cells(3, 4).Locked = 0; // попытка была так снять защиту, но все равно не работает
        КодОрг = "000000000"+Формат(Эксель.Cells(3,4).Value,"ЧГ=0");
        КодОрг = Прав(СокрЛП(КодОрг),9);
        Если  КодОрг = "000000038" Тогда
            Эксель.Cells(3,4).Value = 70;
        КонецЕсли;
        //книга.SaveAs(имяФайла,-4143);
    КонецЦикла;    
    Эксель.Application.Quit();



Как снять защиту правильно?
1 Fish
 
03.09.14
11:18
2 Kamas
 
03.09.14
11:18
(0) Создай свой файл не защищенный))
3 Pandoch
 
03.09.14
12:42
(2) - нужно править существующий, после устанавливать защиту снова и сохранять.

Сработало так:
МассивФайлов = НайтиФайлы(ПутьКПапке, "*.XLS");
    Отказ = Ложь;
    НачатьТранзакцию();
    ТранзакцияОткрыта = Истина;
    Для каждого Файл Из МассивФайлов Цикл
        
        имяФайла = Файл.полноеИмя;
        
        Попытка
            Эксель = Новый COMОбъект("Excel.Application");
        Исключение
            Сообщить(ОписаниеОшибки() + " Не удалось запустить MS Excel");
            ТранзакцияОткрыта = Ложь;
            ОтменитьТранзакцию();
            Прервать;
        КонецПопытки;
        
        Книга = Эксель.WorkBooks.Open(имяФайла);
        Эксель.DisplayAlerts=0;//не выдавать предупреждений
        
        
        Лист = Книга.WorkSheets(1);
        Книга.ActiveSheet.UnProtect("sNlw3IxcXv");
                
        КодОрг = "000000000"+Формат(Эксель.Cells(3,4).Value,"ЧГ=0");
        КодОрг = Прав(СокрЛП(КодОрг),9);
        Если  КодОрг = "000000038" Тогда
            Эксель.Cells(3,4).Value = 70;
        ИначеЕсли КодОрг = "000000000"  Тогда
            Сообщить(имяФайла + "   ");
        КонецЕсли;
        Книга.ActiveSheet.Protect("sNlw3IxcXv");
        Эксель.DisplayAlerts = False;

        книга.SaveAs(имяФайла);
    КонецЦикла;    
    Эксель.Application.Quit();
Независимо от того, куда вы едете — это в гору и против ветра!