使用Sheets.Add,错误使用After参数,“Expected Statement”

我正在尝试将工作表添加到现有工作簿,将新工作表放在之前。 我可以使用Sheets.Add成功添加,但是任何时候我尝试使用After参数后,我都会收到一个错误,指出“Expected Statement”。 看来VBS不喜欢我的:=运算符。

使用Excelmacros编辑器,似乎这应该工作:

 Sheets.Add After:=ActiveSheet 

或这个:

 Sheets("Sheet1").Move After:=Sheets(4) 

无论哪种方式,我碰到预期的陈述错误。 我已经尝试了各种在线的例子,似乎无法find正确的语法。 FWIW,这是在Windows 10上运行的Office 16的新安装。

VBScript语法不支持“按名称传递参数”。 您需要使用“按位置传递参数”来代替。 例如

 Sheets.Add Null, ActiveSheet Sheets("Sheet1").Move , Sheets(4) 

参考:
https://msdn.microsoft.com/en-us/library/office/ff838966.aspx
https://msdn.microsoft.com/en-us/library/office/ff834742.aspx

使用下面的代码,最好将wb设置为您的工作簿的名称,也是您的工作表的名称。

 Sub AddSheet() Dim wb As Workbook Dim sht As Worksheet 'better to use this reference to wb object >> modify to your Workbook name Set wb = Workbooks("Book1.xlsm") 'better to use this reference to sht object >> modify to your Sheet name Set sht = wb.Sheets("Sheet2") wb.Sheets.Add After:=wb.Sheets(sht.Index) End Sub 

您遇到的问题有两个原因:

a)因为您正在尝试使用属于您创build的Excel应用程序对象( xlApp )的一部分的对象而不告诉VBScript这就是它们,

b)因为VBScript不支持“命名参数”(至less,据我所知不)的概念,所以你必须使用位置参数。

因此,只是说SheetsxlApp.Sheets完全不同, After:=语法不是有效的VBScript代码。

以下代码适用于我:

 Set xlApp=CreateObject("Excel.Application") Set wb=xlApp.Workbooks.Add xlApp.Sheets.Add.Name="Test1" xlApp.Sheets.Add.Name="Test2" xlApp.Sheets.Add , xlApp.ActiveSheet xlApp.Sheets.Add , xlApp.Sheets("Test1") wb.SaveAs "TestWorkbook.xlsx" wb.Close False 

(我的第一个VBScript应用程序 – 呜呼!!)