我正在尝试使用Microsoft.Office.Interop.Excel使用C#操作excel文件。 我试图操作的工作簿在用户之间共享保护。
我有文件密码,我有我想要访问和编辑的单元格的密码。
如果我尝试从Excel执行此操作,请执行以下操作:
我想从C#应用程序中执行此操作。
我目前的代码如下:
xl.Application excelApp = new xl.Application();
excelApp.Visible = true;
xl.Workbook newworkbook =
excelApp.Workbooks.Open(@"C:\1.xls", 0, false, 5, "password", "", false,
xl.XlPlatform.xlWindows, "", true, false, 0, true,
false, false);
xl.Sheets excelSheets = newworkbook.Worksheets;
xl.Worksheet excelWorksheet = (xl.Worksheet)excelSheets.get_Item("Sign On_Off");
excelWorksheet.Select(true);
xl.Range myrange = excelWorksheet.get_Range("b16", "b16");
myrange.Value2 = "testing";
最后一行给出了以下错误消息:
您尝试更改的单元格或图表受到保护,因此是只读的。
我无法取消保护整个工作表的原因,这意味着我将仅为我打开文件,而其他用户无法保存更改。
所以我的问题是:我是否只能取消保护细胞?
我想象的是:
myrange.unprotect("pw");
答案 0 :(得分:1)
Protect
仅适用于Workbook
和Worksheet
个类。
或者,您可以尝试使用Worksheet.Protection Property
:
ActiveSheet.Protection.AllowEditRanges.Add _
Title:="Range123", Range:=Range("K4:L10"), Password:="123"
答案 1 :(得分:1)
我没有时间尝试,但this paragraph看起来像你在找什么。您正在寻找的VBA等效对象似乎是ActiveSheet.Protection.AllowEditRanges,它存储有关用户可以在工作表中编辑的区域的信息。
您可能想要研究的一件事是ActiveSheet.Protect上的UserInterfaceOnly选项。您可以使用用户密码保护范围,但可以通过宏访问它而无需密码。