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