2012-12-17 52 views
0

我正在使用以下VB.NET代碼複製同一工作簿中的Excel工作表,但工作表名稱每次都用(2)寫入,這裏出了什麼問題?爲什麼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)」?

感謝

回答

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 
+0

注:我不能測試建議的代碼,因爲我沒有訪問到VB.NET現在,但算法的問題是我主要想指出的。 – nullrevolution

+0

非常感謝你的時間和幫助。 – mrn

1

只是引用您創建的工作表,並重新命名它。你只需要行工作表(I + 1),請將.Name = 「INP」 &我+ 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 
相關問題