使用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,据我所知不)的概念,所以你必须使用位置参数。
因此,只是说Sheets
与xlApp.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应用程序 – 呜呼!!)