0

我有一个 VSTO 应用程序,我在一个工作簿中打开多个工作表。我有一种情况,我必须知道在任何给定情况下打开了哪些所有工作表。有什么办法可以找出来吗?

我正在使用带有 OBA 的 C#。

4

1 回答 1

1

我不是 C# 人,但您当然应该能够获得您正在寻找的信息。因此,以下示例是 VBA,但您应该在 C# 中使用所有相同的方法。

正如我在对 OP 的评论中提到的那样澄清:

  • ActiveSheetExcel 工作簿在任何给定时间只有一个,并且
  • 当工作簿打开时,所有工作表都“打开”(但只有其中一个是ActiveSheet

要确定工作簿中有多少工作表,请使用集合的Count属性:Worksheets

w = ActiveWorkbook.Worksheets.Count

要确定活动工作表的名称:

sName = ActiveWorkbook.ActiveSheet.Name

如果您有多个打开的工作簿,并且想要在每个工作簿中获取活动工作表的名称(这只是分配给一个字符串,但可能我会将它们存储在一个数组中,以便以后可以在需要时引用它们) :

For each wb in Excel.Application.Workbooks
    sName = wb.ActiveSheet.Name
Next

For/Next如果您想在所有工作簿中存储所有工作表的名称,您可以这样做,或者嵌套另一个:

For each wb in Excel.Application.Workbooks
    For each ws in wb.Worksheets
        sName = ws.Name
    Next
Next

等等。

于 2013-06-20T14:35:27.343 回答