如何在工作表中禁用选择被锁定的值:Microsoft.Office.Interop.Excel VB.NET

4
我正在使用Microsoft.Office.Interop.Excel库在VB.Net中操作一个受保护的Excel表格。所有受保护的设置都正常工作,但我无法设置“选择锁定单元格”,这个选项在使用Excel保护表格界面时会显示,但我不知道如何使用该库将其设置为false。我尝试了保护方法中的所有不同值,但没有一个可以切换该值。

Excel保护表格菜单
Excel protected sheet menu

下面是我用于获取工作表、填充一些值并保护表格的代码片段。GetWorkSheet是一个内部方法,它将返回一个WorkSheet对象,invoiceData是一个包含要添加到电子表格中的数据的DataTable对象。
Dim newSheet As Worksheet = getWorkSheet(newSheetName)

' Make the current Work Sheet active so that it will be accepting the data.
newSheet.Activate()
newSheet.Unprotect(sheetPassword)
For i As Integer = 1 To invoiceData.Rows(0).ItemArray.Count
    newSheet.Cells(transactionalRow, i) = invoiceData.Rows(0).ItemArray(i - 1)
Next
'work is done so protect it again
newSheet.Protect(sheetPassword, False, True, False, True, True, True, True, True, True, True, True, True, True, True, True)
excel.ActiveWorkbook.Save()
2个回答

4

是的,这是正确答案,我通过运行Jamison建议的宏发现了它。不幸的是,我现在遇到了一个不同的问题,即更改只在Excel文件打开时生效,但手动关闭或通过excel.Quit方法关闭文件后,该特定更改就会丢失。 - Jeff Fol
即使9年后,这仍然是正确的。然而,在答案中提到的链接已经失效了。 - user77232

1
你可以尝试录制一个宏并设置它来查看生成的代码类型。我曾经在使用Interop库时这样做过。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接