Я пытаюсь манипулировать файлом excel с помощью C# с помощью Microsoft.Office.Interop.Excel. Рабочая книга, которую я пытаюсь манипулировать, имеет общую защиту между пользователями.Как я могу отредактировать или снять защиту одной ячейки в защищенном листе Excel с C#?
У меня есть пароль к файлу, и у меня есть пароль для ячеек, которые я хочу получить и редактировать.
Если я пытаюсь сделать из Excel, я делаю следующее:
- открыть файл, введите пароль
- перейти к ячейке, дважды щелкните на ячейке для редактирования.
- появляется диалог с просьбой предоставить пароль, я предоставляю пароль, а затем могу редактировать.
Я хочу сделать это из приложения C#.
Мой текущий код выглядит следующим образом:
xl.Application excelApp = new xl.Application();
excelApp.Visible = true;
xl.Workbook newworkbook =
excelApp.Workbooks.Open(@"C:\1.xls", 0, false, 5, "password", "", false,
xl.XlPlatform.xlWindows, "", true, false, 0, true,
false, false);
xl.Sheets excelSheets = newworkbook.Worksheets;
xl.Worksheet excelWorksheet = (xl.Worksheet)excelSheets.get_Item("Sign On_Off");
excelWorksheet.Select(true);
xl.Range myrange = excelWorksheet.get_Range("b16", "b16");
myrange.Value2 = "testing";
Последняя строка дает мне сообщение об ошибке:
Клетка или график, который вы пытаетесь изменить защищен, и поэтому только для чтения ,
Я не могу снять защиту всего листа, потому что это означает, что файл будет открыт исключительно для меня, а другие пользователи не смогут сохранить изменения.
Так что мой вопрос: есть ли способ, которым я могу снять защиту только с камеры?
Я представляю себе что-то вроде:
myrange.unprotect("pw");
спасибо, но как отредактировать ячейку, не снимая защиту всей общей книги, которую я имею в виду, с помощью excel я просто нажимаю на ячейку и набираю свой pw для этой ячейки, а затем ее редактируемый, каждый пользователь имеет разные pws для разных ячеек , Я должен быть в состоянии сделать это, не имея pw для защищенной общей книги, так как я могу сделать это от excel – Stacker
Большое вам спасибо, вот что я пробовал: excelWorksheet.Activate(); xl.Range myrange = excelWorksheet.get_Range ("b16", "b16"); excelWorksheet.Protection.AllowEditRanges.Добавить («Название», myrange, «1»); генерирует ошибку: Исключение из HRESULT: 0x800A03EC – Stacker
Извините, но я не знаю, чтобы отсюда оттуда = ( –