需要通过excel加载项(C#VSTO)向工作簿添加新的工作表。工作表本身将包含一条警告消息,内容如下:“如果可以看到此工作表,则说明您未安装加载项。”
[如果安装了加载项,工作表将自动隐藏,麻烦是SharePoint中有1k +个工作簿-因此,当用户打开工作簿时,我添加和隐藏工作表的方法。
我正在尝试添加工作表,然后更改代号。
在VBA中可以使用以下代码:
ThisWorkbook.VBProject.VBComponents(Wks.CodeName).Name = strSheetName
Visual c#在某种程度上暗示了using Microsoft.Vbe.Interop;
和未记录的_codename(保留供内部使用。)可能会允许这样做。
这是我尝试过的:
Excel.Worksheet Wks = Wkb.Sheets["CRM365"];
string strSheetName = "WksWarnings"
Wkb.VBProject.VBComponents(Wks._CodeName).Name = strSheetName;`
当然是行不通的。因为主要是因为VBComponents是不可调用的成员。到目前为止,我发现的所有文档都指出.codename属性是只读的-并非总是如此,请参见上面的VBA示例。
[在我得到答复的“为什么要打扰,等等。”之前,我认为计算机不会告诉我们该怎么做-我们告诉他们。 (直到他们上升并成为我们的霸主),其他所有工作表也都定义了代号。
这是Visual Basic胜过Visual C#的情况吗?
Excel.Worksheet targetWorksheet = ((Excel.Worksheet)Application.ActiveSheet);
Excel.Workbook Wbk = targetWorksheet.Parent();
VBComponents VBC = Wbk.VBProject.VBComponents;
string targetWorksheetCodeName = targetWorksheet.CodeName; // <-- use your sheet here
foreach(VBComponent v in VBC)
{
if (v.Name.Equals(targetWorksheetCodeName))
{
v.Name = "Blah-blah-blah";
}
}
我没有测试它,因为我没有先决条件,但是我想它会成功的。