我正在尝试将工作表添加到现有工作簿中,将新工作表放在先前的工作表之后。我可以使用Sheets.Add
成功添加,但只要我尝试使用After
参数,我就会收到错误,指出“预期声明”。看起来VBS不喜欢我的:=
运营商。
使用Excel宏编辑器,似乎这应该有效:
Sheets.Add After:=ActiveSheet
或者这个:
Sheets("Sheet1").Move After:=Sheets(4)
无论哪种方式,我都会遇到Expected Statement错误。我试过各种在线示例,似乎无法找到合适的语法。 FWIW,这是在Windows 10上运行的Office 16的新安装。
答案 0 :(得分:2)
"按名称传递参数" VBScript语法不支持。您将需要使用"按位置传递参数"代替。 e.g。
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
答案 1 :(得分:0)
使用下面的代码,最好将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
答案 2 :(得分:0)
您的问题出现有两个原因:
a)因为您尝试使用属于您创建的Excel应用程序对象(xlApp
)的对象,而没有告诉VBScript它们是什么,以及
b)因为VBScript不支持"命名参数" (至少,据我所知它没有)所以你必须使用位置参数。
所以只说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应用程序 - 哇哇!!)