确定WorkSheet.Name是否不在工作簿中,或字符串是否不在数组VB.NET中

确定WorkSheet.Name是否不在工作簿中,或字符串是否不在数组VB.NET中,vb.net,excel,vsto,Vb.net,Excel,Vsto,这似乎是一个很简单的问题,但我似乎找不到一个好办法。我想检查索引为'n'的Excel工作表的名称是否不在VSTO工作簿的原始工作表名称集中 工作簿的模板中有13个工作表,程序会在末尾和中间添加更多工作表。添加的任何工作表都不会被命名为模板中包含的工作表名称之一(我已成功阻止此操作)。我经常想对所有添加的工作表执行操作,这些工作表不是原始的13页,因此我希望尝试使用数组或列表ThisWorkbook.Names,因为它从初始模板中存在 现在我的工作是: If ThisWorkbook.Works

这似乎是一个很简单的问题,但我似乎找不到一个好办法。我想检查索引为
'n'
的Excel工作表的名称是否不在VSTO工作簿的原始工作表名称集中

工作簿的模板中有13个工作表,程序会在末尾和中间添加更多工作表。添加的任何工作表都不会被命名为模板中包含的工作表名称之一(我已成功阻止此操作)。我经常想对所有添加的工作表执行操作,这些工作表不是原始的13页,因此我希望尝试使用数组或列表ThisWorkbook.Names,因为它从初始模板中存在

现在我的工作是:

 If ThisWorkbook.Worksheets(n).Name <> Sheet1.Name OrElse ThisWorkbook.Worksheets(n).Name <> wbX.Sheet2.Name ..... <>wbX.Sheet13.Name
如果此工作簿.Worksheets(n).Name Sheet1.Name或lse此工作簿.Worksheets(n).Name wbX.Sheet2.Name。。。。。wbX.Sheet13.Name
不用说,这很麻烦。我的想法是否正确,或者是否有更简单的方法来检查名称是否不在原始图纸名称中


我知道,如果我能在13之后强制所有工作表,我可以只使用索引,但目前这对于项目的意图是不可行的。

启动时,将模板中的所有工作表名称填入列表:

Dim templateSheets As List(Of String) = new List(Of String)
For Each sheet As Excel.Worksheet in Globals.ThisWorkbook.Worksheets
  templateSheets.Add(sheet.Name)
Next
然后您的上述查询可以缩写为

If Not templateSheets.Contains(ThisWorkbook.Worksheets(n).Name) Then

我实际上不打算在启动时这样做,因为当他们保存并返回时,这会扩展,但我硬编码了一次列表,并将其作为数据存储在VSTO中。谢谢