Visual c#VSTO Excel重命名工作表的代号属性

问题描述 投票:1回答:1

需要通过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#的情况吗?

c# excel vba vsto worksheet
1个回答
0
投票
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"; } }

我没有测试它,因为我没有先决条件,但是我想它会成功的。

© www.soinside.com 2019 - 2024. All rights reserved.