#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. Поле пароля является необязательным.