使用vb.net保护excel中的单元格
Posted
技术标签:
【中文标题】使用vb.net保护excel中的单元格【英文标题】:Protecting cells in excel using vb.net 【发布时间】:2017-02-22 03:59:57 【问题描述】:我在 Visual Studio 2013 中有一个 Excel 工作表和一个 Windows 窗体。该窗体允许用户在 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:\Users\test.xlsx")
'xlApp.Visible = True
xlWorkSheet = xlWorkBook.Sheets("Sheet1")
xlWorkBook.Unprotect()
'entering data in excel
xlWorkBook.Save()
xlWorkBook.Protect()
End Sub
我收到错误消息,提示“您尝试输入数据的单元格受到保护。”像这样的东西。 我该怎么办? 请帮忙!!
【问题讨论】:
让我们从这里继续。不,我的意思是,如果没有密码来“保护”单元格,那么任何用户仍然可以取消保护它,对吧?最后,工作簿真的是受保护的吗?还是工作表? ya @CrushSundae 但他们必须打开 excel,单击评论选项卡,然后取消保护它。无论如何,我会在之后添加密码。我现在主要关心的是如何允许通过表单在锁定的单元格中输入数据。我只保护了 sheet1 不,你的方向是对的。您不能在单元格中输入记录,因为它受到保护。所以检查保护是在工作簿还是工作表级别。 在我的测试中(不是通过代码),我尝试通过工作表和工作簿来保护 Excel。删除了工作簿的保护,除非我也删除工作表的保护,否则仍然无法编辑。 我认为它在工作表级别。因为只有 Sheet1 在 excel 中受到保护 【参考方案1】:所以根据我们的讨论:
您的代码的问题是您正在取消保护 Workbook,但真正受到保护的是您的 Worksheets。
此外,除了禁用您需要使用的确认警报:
xlApp.DisplayAlerts = False
您还需要在保存之前先设置protection
。
附言。我将我们的讨论总结为一个答案,因为它解决了问题并且对未来的用户有帮助。
【讨论】:
我在没有任何密码的情况下保护了工作表。这就是为什么我没有添加密码部分 密码字段是可选的。以上是关于使用vb.net保护excel中的单元格的主要内容,如果未能解决你的问题,请参考以下文章
如何在VB.NET ListView获取已选中单元格所在的列?