Add方法创建工作簿或工作表
1、Add方法创建新的工作簿
语法:workbooks对象.add(temple), 其中temple为参数可选
另外还可以指定工作簿中工作表数量,如:
Dim bbb As Workbook
Application.SheetsInNewWorkbook = 5
Set bbb = Workbooks.Add
bbb.SaveAs fileName:="你好"
如果没有指定工作表数量,则默认创建空的工作簿
2、Add方法创建一个新工作表并使其成为活动工作表
语法:worksheets对象.Add(Before,After,Count,Type) , 所有参数均可选
说明:
-
参数Before和参数After只能二选一。
-
参数Before指定一个工作表,新添加的工作表放置在该工作表之前。
-
参数After指定一个工作表,新添加的工作表放置在该工作表之后。
-
参数Count指定要添加的工作表数量,默认值为1。
'在工作表最后插入3张工作表,多个参数要用逗号隔开 Worksheets.Add after:=Worksheets(Worksheets.Count), Count:=3 '当前活动工作表名字改为newsheet ActiveSheet.Name = "newsheet"
-
新添加的工作表成为活动工作表,因此使用Activesheet属性来返回当前工作表并使用Name属性来给工作表命名。
二、Delete方法删除工作簿或工作表
语法:工作表对象.delete
Sheets("sheet1").Select
ActiveWindow.SelectedSheets.Delete
'关闭警告消息
Application.DisplayAlerts = False
'遍历工作表并删除工作表名不是"newsheet"的工作表
For Each ws In Worksheets
If ws.Name <> "newsheet" Then ws.Delete
Next ws
'恢复警告消息
Application.DisplayAlerts = True
Dim bbb As Workbook
Dim ws As Worksheet
Application.SheetsInNewWorkbook = 5
Set bbb = Workbooks.Add
bbb.SaveAs fileName:="你好"
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "newsheet"
'Sheets("sheet1").Select
'ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = False
'关闭警告消息
Application.DisplayAlerts = False
'遍历工作表并删除工作表名不是"newsheet"的工作表
For Each ws In Worksheets
If ws.Name <> "newsheet" Then ws.Delete
Next ws
'恢复警告消息
Application.DisplayAlerts = True
Open方法
工作簿/表对象 . Open( FileName , UpdateLinks , ReadOnly , Format , Password , WriteResPassword ,
IgnoreReadOnlyRecommended , Origin , Delimiter , Editable , Notify , Converter , AddToMru , Local , CorruptLoad )
参数说明:
具有很多参数,但大多数参数都很少用到。在这些参数中,除参数FileName必须外,其它参数都可选。
参数FileName指定要打开的工作簿文件的名称(特别注意!!这个参数不仅仅指工作簿的名称,还包括其路径!),参数UpdateLinks指定更新工作簿中链接的方式,参数ReadOnly用来设置是否以只读方式打开工作簿。如果需要使用密码来打开工作簿,则应该将参数Password设置为该密码;如果需要使用密码打开工作簿但没有指定密码,则会弹出询问密码的对话框。参数AddToMru指定是否将工作簿添加到最近使用的文件列表中,建议将其设置为True,默认值为False。
'应用示例4:以只读方式打开某工作簿
Sub openWorkbook2()
Dim fname As String
MsgBox "将D盘中的<测试.xls>工作簿以只读方式打开"
fname = "D:\测试.xls"
Workbooks.Open Filename:=fname, ReadOnly:=True
End Sub
Copy方法
对工作表进行操作
Dim wba As Workbook, wbc As Worksheet
'若下面两句set顺序互换则会出错,原因是ActiveWorkbook会变成新加的workbook,而新的workbook里没有“季度汇总”
'或者可以稳妥的加上如下语句: Windows("季报.xlsm").Activate
Set wbc = ActiveWorkbook.Worksheets("季度汇总")
Set wba = Workbooks.Add
wbc.Copy before:=wba.Sheets(1)
表内数据的操作
'将数据表“季度汇总”中B2单元格复制到第二个sheet中的A1单元格内
Sheets("季度汇总").Range("B2").copy Sheets(2).Range("A1")
save方法
当前工作簿保存 save
ActiveWorkbook.Save
save as
语法:SaveAs
( _FileName_
, _FileFormat_
, _Password_
, _WriteResPassword_
, _ReadOnlyRecommended_
, _CreateBackup_
, _AccessMode_
, _ConflictResolution_
, _AddToMru_
, _TextCodepage_
, _TextVisualLayout_
, _Local_
)
其中以filename较为常用,注意filename可包含完整路径,如果不指定路径,Microsoft Excel 将文件保存到当前文件夹中,因此
最好是把路径填写完整。
Dim wba As Workbook, Dim fname As String
Set wba = Workbooks.Add
wkfilename = "D:\Desktop\hello.xlsx"
wba.SaveAs filename:=wkfilename
close方法
语法:工作簿对象.Close(SaveChanges, Filename, RouteWorkbook)
三个参数均可选
SaveChanges: 用于在关闭工作簿前保存工作簿所发生的变化,如果工作簿没有变化,该参数将被忽略。如果工作簿显现在其它打开的窗口中,该参数也被忽略。如果工作簿发生了变化且没有显现在任何其它打开的窗口中,该参数将生效。如果SaveChanges的值为True,将存储该变化。如果参数SaveChanges的值为False,则工作簿所发生的变化不会被保存。最后,如果参数SaveChanges被忽略,Excel将显示一个对话框询问是否保存工作簿所发生的变化。
Filename:如果先前该工作簿没有保存过(没有文件名),那么将使用在参数FileName中所设置的名称,若用户没有填写该参数,Excel将提示用户输入一个文件名。简而言之,该方法的行为正如你所希望的。
RouteWorkbook:指出工作簿传送的问题 。
dim wb as workbook
wb.Close SaveChanges:=ture