Защита ячеек в Excel с помощью vb.net

#excel #vb.net #visual-studio-2013 #excel-2013

#excel #vb.net #visual-studio-2013 #excel-2013

Вопрос:

У меня есть лист Excel и форма Windows в Visual Studio 2013. Форма позволяет пользователям вводить данные в таблицу Excel. Он будет доступен нескольким пользователям. Что я хочу сделать, так это то, что определенные ячейки в Excel (например, столбцы от B до G) должны быть заблокированы, но ввод данных в эти ячейки должен быть разрешен через форму. Как только пользователь открывает Excel, он может редактировать другие столбцы, но не эти столбцы. Я заблокировал ячейки и защитил рабочий лист в Excel. Затем в моем коде vb я добавил эти:

  Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
              xlWorkBook =   xlApp.Workbooks.Open("C:Userstest.xlsx")
          'xlApp.Visible = True
           xlWorkSheet = xlWorkBook.Sheets("Sheet1")
    xlWorkBook.Unprotect()

   'entering data in excel

    xlWorkBook.Save()
    xlWorkBook.Protect()
End Sub
  

Я получаю сообщение об ошибке, в котором говорится, что «ячейки, в которые вы пытаетесь ввести данные, защищены». что-то вроде этого.
Что мне делать?
Пожалуйста, помогите!!

Комментарии:

1. Давайте продолжим здесь. Нет, я имею в виду, если нет пароля для «защиты» ячеек, то любой пользователь все равно может снять его защиту, верно? И, наконец, рабочая книга действительно защищена? или рабочий лист?

2. ya @CrushSundae но им придется открыть Excel, перейти на вкладку обзор, а затем снять защиту. В любом случае, я добавлю пароль позже. Сейчас меня больше всего волнует, как разрешить ввод данных в заблокированные ячейки через форму. Я защитил только лист1

3. Нет, вы на правильном пути. Вы не можете вводить записи в ячейку, поскольку она защищена. Поэтому проверьте, находится ли защита на уровне книги или рабочего листа.

4. В моем тестировании (не через код) я попытался защитить Excel с помощью worksheet и workbook. Удалена защита по рабочей книге и по-прежнему не может редактировать, если я также не удалю защиту с рабочего листа.

5. Я думаю, это на уровне рабочего листа. Поскольку в Excel защищен только Лист1

Ответ №1:

Итак, согласно нашему обсуждению:

Проблема с вашим кодом в том, что вы снимаете защиту с рабочей книги, но те, которые действительно защищены, — это ваши рабочие листы.

Кроме того, в дополнение к отключению оповещений о подтверждении вам необходимо использовать:

xlApp.DisplayAlerts = False

Вам также необходимо установить protection первый перед сохранением.

PS. Я подвел итог нашему обсуждению в качестве ответа, потому что он решил вопрос и может быть полезен будущим пользователям.

Комментарии:

1. Я защитил рабочий лист без какого-либо пароля. Вот почему я не добавил часть пароля

2. Поле пароля является необязательным.