如何在所有现有的Excel工作表之后添加工作表?

我需要在当前工作表编号3的末尾添加一个Excel工作表。但是,当我运行下面的程序时,我会在第一个工作表中得到一个工作表。 我该如何解决这个问题?

该程序基本上将数据从一个Excel工作簿复制到另一个工作簿,由多个工作表组成。

码:

Dim objXL,objWrkBk,objWrkSht,a,n Set objfso=CreateObject("Scripting.FileSystemObject") Set objXL=CreateObject("Excel.Application") Set objWrkBk=objXL.Workbooks.Open("C:\learning\demo.xlsx") m=objWrkBk.Worksheets.count msgbox m For n=1 to m Set objWrkBk=objXL.Workbooks.Open("C:\learning\demo.xlsx") Set objWrkSht=objWrkBk.Worksheets("Sheet"&n) columncount = objWrkSht.usedrange.columns.count rowcount = objWrkSht.usedrange.rows.count For i=1 to rowcount For j=1 to columncount If objWrkSht.cells(i,j).value <> "" Then a= objWrkSht.cells(i,j).value& " " End If 'Next 'Next check=objfso.FileExists("C:\learning\demo1.xlsx") If not check Then objXL.Workbooks.Add objXL.ActiveWorkbook.SaveAs("C:\learning\demo1.xlsx") End If Set objWrkBk1=objXL.Workbooks.Open("C:\learning\demo1.xlsx") If n<=3 Then Set objWrkSht1=objWrkBk1.Worksheets("Sheet"&n) End If If n>3 Then objXL.Worksheets.add Set objWrkSht1=objWrkBk1.Worksheets("Sheet"&n) End If If objWrkSht.cells(i,j).value <> "" Then objWrkSht1.cells(i,j).value=a objWrkBk1.Save End If Next Next Set objWrkSht=Nothing Set objWrkBk=Nothing Set objWrkSht1=Nothing Set objWrkBk1=Nothing Next objXL.Quit Set objXL=Nothing 

您可以在After位置添加工作表,即此代码将工作表添加到最后一个工作表之后(由objWrkBk.Sheets(objWrkBk.Sheets.Count)) ,其中objWrkBk.Sheets.Count)是添加之前的工作表数量。

 Set objXL = CreateObject("Excel.Application") Set objWrkBk = objXL.Workbooks.Add Set objWrkSht = objWrkBk.Sheets.Add(, objWrkBk.Sheets(objWrkBk.Sheets.Count)) 

似乎Worksheets属性是只读的

返回表示指定工作簿中所有工作表的Sheets集合。 只读表格对象。

https://msdn.microsoft.com/en-us/library/office/ff835542(v=office.15).aspx

而Sheets则是您可以dynamic添加Sheets的真实场景

指定或活动工作簿中所有工作表的集合。

https://msdn.microsoft.com/en-us/library/office/ff193217(v=office.15).aspx