|   |   | 
| 
 | запись в ексель | ☑ | ||
|---|---|---|---|---|
| 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(); | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |