创建新的 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自动创建Sheet1、Sheet2、Sheet3?
之后我总是可以删除这些不需要的工作表,但这感觉像是一个笨拙的解决方案。
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'
无法创建没有任何工作表的工作簿(据我所知),但您可以使用单个工作表创建工作簿,而不会弄乱用户的设置。
dim wb as Workbook
Set wb = xl.Workbooks.Add(xlWBATWorksheet)
或者您可以:
Excel 2003 工具>选项>常规选项卡并将“新工作簿中的工作表”更改为 1
Excel 2007 Office 按钮>Excel 选项>常用部分>创建新工作簿时...>包括这么多工作表>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