没有任何工作表开始空的Excel工作簿

创build一个新的Excel工作簿,如下所示:

Dim xl As Excel.Application Dim wb As Excel.Workbook Set xl = New Excel.Application xl.Visible = False Set wb = xl.Workbooks.Add 

有没有简单的方法来停止Excel自动创buildSheet1,Sheet2,Sheet3?

之后,我总是可以删除这些不需要的表单,但是这感觉像是一个笨重的解决scheme。

 xl.SheetsInNewWorkbook = 1 

有关MSDN的更多信息(向下滚动到Add method as it applies to the Workbooks object.

完整代码:

 Dim xl As Excel.Application Dim wb As Excel.Workbook Dim restoreSheetsInNewWorkbook As Long Set xl = New Excel.Application restoreSheetsInNewWorkbook = xl.SheetsInNewWorkbook xl.SheetsInNewWorkbook = 1 Set wb = xl.Workbooks.Add xl.SheetsInNewWorkbook = restoreSheetsInNewWorkbook 'or just set it to 3' 

不能在没有任何工作表的情况下创build一个工作簿(据我所知),但是您可以使用单个工作表创build工作簿, 而不会混淆用户的设置。

 dim wb as Workbook Set wb = xl.Workbooks.Add(xlWBATWorksheet) 

或者你可以:

Excel 2003工具“>”选项“>”常规“选项卡,然后将”新工作表中的工作表“更改为1

Excel 2007 Officebutton> Excel选项>常用部分>创build新工作簿时>>包括这么多工作表> 1

 Sub DeleteSheets() Dim DeleteSheet As Variant Dim ws As Worksheet DeleteSheet = Array("Sheet1", "Sheet2", "Sheet3") Application.DisplayAlerts = False For Each ws In Worksheets If IsInArray(ws.Name, DeleteSheet) Then ws.Delete Next End Sub Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean Dim i As Integer Dim Ret As Boolean Ret = False For i = LBound(arr) To UBound(arr) If VBA.UCase(stringToBeFound) = VBA.UCase(arr(i)) Then Ret = True Exit For End If Next i IsInArray = Ret End Function