【问题标题】:Why excel worksheet name has (2) in it?为什么excel工作表名称中有(2)?
【发布时间】:2012-12-18 02:29:29
【问题描述】:

我正在使用以下 VB.NET 代码在同一个工作簿中复制 Excel 工作表,但工作表名称每次都写有 (2),这里有什么问题?

Dim inp as Integer
inp=Val(Textbox1.Text)

oWB = oXL.Workbooks.Open("D:\testfile.xlsx")
oSheet = oWB.Worksheets("base")
With oWB
   For i = 0 To inp - 1
     oSheet.Copy(Before:=.Worksheets(i + 1))
     With oSheet
       .Name = "INP" & i + 1
     End With
   Next
End With

如何去掉工作表名称上的“(2)”?

谢谢

【问题讨论】:

    标签: vb.net excel worksheet-function


    【解决方案1】:

    下面一行:

         oSheet.Copy(Before:=.Worksheets(i + 1))
    

    正在创建您指定的工作表的副本。当您创建工作表的副本时,Excel 会在名称中添加 (2) 以防止工作表名称重复。

    假设您有一张名为base 的工作表,您正试图复制它。在处理完上面的那一行之后,您最终会得到一个名为 base 的原始工作表和一个名为 base (2) 的新工作表。

    然后,接下来的几行代码:

         With oSheet
           .Name = "INP" & i + 1
         End With
    

    只需重命名原始工作表即可。

    试试这个而不是这两行:

         With oWB.Worksheets("base (2)")
           .Name = "INP" & i + 1
         End With
    

    【讨论】:

    • 注意:我无法测试建议的代码,因为我现在无法访问 VB.NET,但我主要想指出的是算法的问题。
    【解决方案2】:

    只需引用您创建的工作表并重命名即可。您只需要行 Worksheets(i + 1).Name = "INP" & i + 1 见下文

    Dim inp as Integer
    inp=Val(Textbox1.Text)
    
    oWB = oXL.Workbooks.Open("D:\testfile.xlsx")
    oSheet = oWB.Worksheets("base")
    With oWB
       For i = 0 To inp - 1
         oSheet.Copy(Before:=.Worksheets(i + 1))
         'reference and name worksheet
         Worksheets(i + 1).Name = "INP" & i + 1
       Next
    End With
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      相关资源
      最近更新 更多