使用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中如何获得DataGridView单元格内容

如何在VB.NET ListView获取已选中单元格所在的列?

如何使excel中的单元格不可编辑

在VB.NET中需要一个类似Excel的网格[关闭]

使用 Office Interop 将单元格写入 Excel 的最快方法?

Excel中 如何局部修改单元格里的内容