0

次の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)」を取り除くには?

ありがとう

4

2 に答える 2

1

作成したワークシートを参照して名前を変更するだけです。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
于 2012-12-17T18:29:29.227 に答える
1

次の行:

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

指定したシートのコピーを作成しています。シートのコピーを作成するとき、Excelは名前に追加(2)して、シート名が重複しないようにします。

たとえば、baseコピーしようとしているという名前のシートがあったとします。上記の行を処理すると、元のシートという名前baseと新しいシートという名前になりbase (2)ます。

次に、コードの次の数行:

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

元のシートの名前を変更するだけです。

これらの2行の代わりにこれを試してください。

     With oWB.Worksheets("base (2)")
       .Name = "INP" & i + 1
     End With
于 2012-12-17T18:23:16.587 に答える